Entwickler-Ecke
Multimedia / Grafik - BMP verkleinern
csigg - Mi 27.07.05 11:34
Titel: BMP verkleinern
Wie kann ich ein BMP bei annehmbarer Qualität verkleinern??
Hab hier im Forum und bei Google zwar viel gefunden, aber nicht was wirklich brauchbar war.
Gausi - Mi 27.07.05 11:38
Meinst du die Dateigröße kleiner machen, oder die Bildausmaße verkleinern (Breite/Höhe)?
-delphin- - Mi 27.07.05 11:38
mit Paint?
Stübi - Mi 27.07.05 11:43
Hallo
Versuchs mal mit Invan View oder Irnvan View einfach mal googeln. Ich weiss einfach nicht genau ob der auch bmp's unterstützt.
Gruss Stübi
Popov - Mi 27.07.05 12:04
Das ist keine OffTopic Frage, also muß er das Verkleinern mit Delphi meinen.
maxk - Mi 27.07.05 12:35
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure MachKlein(Bitmap:TBitmap;const NeueBreite, NeueHoehe: integer); var TempBitmap:TBitmap; begin TempBitmap:=TBitmap.Create; with TempBitmap do try Width:=NeueBreite; NeueHoehe:=NeueHoehe; Canvas.CopyMode:=srcCopy; Canvas.CopyRect(Rect(0,0,Width,Height), Bitmap.Canvas, Rect(0,0,Bitmap.Width,Bitmap.Height)); Bitmap.Assign(TempBitmap); finally Free; end; end; |
Gruß,
maxk
mehmeh - Mi 27.07.05 12:40
ich denk mal es ist die Bildgröße gemeint
Vielleicht ginge es ja mit einem Image und der eigenschaft onStartDrag, dann könnte man die Größe vielleicht mit der Maus ändern. Oder nicht?
csigg - Mi 27.07.05 13:09
war ich so undeutlich ??*g*
Es geht drum dass ich in meinem Prog. JPEG´s einlese, verkleinere (physische Grösse und Speicherplatz) und dann speichere zum Weiterverarbeiten.
Popov - Mi 27.07.05 13:11
csigg hat folgendes geschrieben: |
war ich so undeutlich ??*g*
Es geht drum dass ich in meinem Prog. JPEG´s einlese,
|
Eigentlich ja
csigg hat folgendes geschrieben: |
Wie kann ich ein BMP bei annehmbarer Qualität verkleinern?? |
csigg - Mi 27.07.05 13:21
Das war ja nur zur erklärung der Situation.
In einem vorigen Thread hab ich mir erklären lassen dass ich das bmp leichter bearbeiten kann. Drum wird bei mir das JPEG erst als BMP umgewandelt
Blackheart666 - Mi 27.07.05 13:34
Liest Du Dir auch deine vorigen Threads Durch ?!
csigg - Mi 27.07.05 16:26
Ja, hab aber nix gefunden, ws einigermassen brauchbare ergebnisse liefert.
Und mit Antworten "such mal" komm ich auch nciht weiter, siehe Anfang Topic
Heiko - Mi 27.07.05 16:37
Verusche es mal mit der GDI-Funktion StretchDraw (Unit Windows).
Keldorn - Mi 27.07.05 18:22
Titel: Re: BMP verkleinern
csigg hat folgendes geschrieben: |
Wie kann ich ein BMP bei annehmbarer Qualität verkleinern??
Hab hier im Forum und bei Google zwar viel gefunden, aber nicht was wirklich brauchbar war. |
glaub ich dir nicht. Dazu gab es schon oft Beiträge. gugg nach
INTERPOLATION, in den opensource-sparten ist auch ein Beispiel für eine lineare Interpolation von Andreas Pfau, für einfache Verkleinerungen (bis ca. 70% der originalgröße ist das auch völlig ok). für stärke Verkleinerungen liefern bikubische oder Lanczos3-Algos bessere Resultate.
Achso: wenn du nach interpolation suchst, wirst du oft auf die graphics32-lib verwiesen. (
http://www.g32.org), diese hat bereits die obengenannten Algos implementiert, dort gibt es auch ein Demo, was sich mit dem Resampling beschäftigt.
Mfg Frank
F34r0fTh3D4rk - Mi 27.07.05 18:34
maxk hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure MachKlein(Bitmap:TBitmap;const NeueBreite, NeueHoehe: integer); var TempBitmap:TBitmap; begin TempBitmap:=TBitmap.Create; with TempBitmap do try Width:=NeueBreite; NeueHoehe:=NeueHoehe; Canvas.CopyMode:=srcCopy; Canvas.CopyRect(Rect(0,0,Width,Height), Bitmap.Canvas, Rect(0,0,Bitmap.Width,Bitmap.Height)); Bitmap.Assign(TempBitmap); finally Free; end; end; |
Gruß,
maxk |
habs etwas korrigiert und
stretchdraw anstatt
CopyRect genommen, mit bitblt hab ichs nicht hinbekommen, so funzt es, aber die qualität ist zum kotzen :puke: :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure SizeBMP(Bitmap: TBitmap; const NewWidth, NewHeight: integer); var TempBMP: TBitmap; Rect: TRect; begin TempBMP := TBitmap.Create; with TempBMP do try Width := NewWidth; Height := NewHeight; Rect.Left := 0; Rect.Top := 0; Rect.Right := width; Rect.Bottom := Height; TempBMP.Canvas.StretchDraw(Rect, Bitmap); Bitmap.Assign(TempBMP); finally Free; end; end; |
MFG
F34r0fTh3D4rk ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!