Entwickler-Ecke

Multimedia / Grafik - Auflösung von Bildern ändern


Bergmann89 - Di 17.03.09 10:25
Titel: Auflösung von Bildern ändern
HI,

ich bin grad dabei ein Prog. zu schreiben das mir meine Bilder auf eine bestimmt Auflösung setzt. Hab das soweit ganz gut hin bekommen. Zum verkleinern der Bilder benutz ich diese Funktion [http://www.delphi-forum.de/viewtopic.php?t=61827&highlight=resamplebitmap]. Ich bin aber mit dem Ergebnis nicht zufrieden, die Konturen auf den Bildern sind irgendwie ausgefranzt. Gibts noch ne ander Möglichkeit die Bilder zu verkleinern?

MfG & Thx Bergmann.


Keldorn - Di 17.03.09 11:00

Hallo

Also Suchstichworte sind Suche in: Delphi-Forum, Delphi-Library RESAMPLING oder Suche in: Delphi-Forum, Delphi-Library INTERPOLATION. Den Algo den Du verwendest habe ich nicht probiert. Aber im Forum findest du noch weitere Beispiele zu linearen Interpolation und zur bikubischen Interpolation. Erstere ist recht schnell, zweitere zwar langsamer, liefert aber gute Ergebnisse, insbesonder bei starken Verkleinerungen.
Das ergebnis ist auch immer davon abhängig, wie stark die Bilder verkleinert werden, wenn Du sie extrem verkleinerst, lohnt sich ein Blick auf den Lancosz-Filter.

Es gibt auch fertige Sachen, wie z.B. die Graphics32-lib. Einfach dort mal in den Beispielen guggn

Gruß Frank


Bergmann89 - Di 17.03.09 11:20

Hi,

hab mir grad ma die Graphics32-lib angesehen. Die Ergebnisse sehen ganz gut aus, ich werd versuchen das jetzt in mein Prog einzubauen. Danke...

MfG Bergmann.


Bergmann89 - Di 17.03.09 14:18

Hey,

hab mir das das ma angeguckt, aber irgendwie komm ich noch nich richtig klar. Bei den Beispielen blick ich net durch, weil da noch so viel rund rum is und ich nich weiß was zu wem gehört...
Ich hab das jetzt so gemacht, aber das werden die Bilder schwarz?!


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var BMP: TBitmap32;
BMP := TBitmap32.Create;
BMP.Resampler := TLinearResampler.Create(BMP);

BMP.LoadFromFile(FilePathList[FileCounter]);

BMP.Width  := Width;
BMP.Height := Height;

BMP.SaveToFile(SavePathLabel.Caption+FileList.Items[FileCounter]);

Is der Ansatz in die richtige Richtung? Und hat vlt jmd n kleines Bsp. wo man durchblickt?

MfG & Thx Bergmann


Keldorn - Di 17.03.09 14:38

ich habe lange nicht mehr in diese Richtung gemacht, bin aber der felsenfesten Meinung, das bei der g32 auch Beispiele dabei waren.

ich halte sowas
Zitat:

BMP.Width := Width

immer für gefährlich, da jenachdem, wo das steht ist nicht 100% klar was width ist.


Bergmann89 - Di 17.03.09 17:29

HI,

das hab ich mir selber zusammen greimt, weil ich mit den Beispielen nich klar komm. Und die Bilder haben danach auch die richtige Auflösung, sie sind nur schwarz...

MfG Bergmann.