Entwickler-Ecke

Multimedia / Grafik - Bilddateien verkleinern


error - Mo 19.01.09 17:36
Titel: Bilddateien verkleinern
Ich möchte in einem Projekt Bilddateien (hauptsächlich JPG und PNG) laden, verkleinern, einen Text drauf schreiben und dann wieder abspeichern. Derzeit mache ich das, indem ich die Standardklasse TJPEGImage sowie TPNGObject vom PNGLib-Projekt nutze. Beide Klasssen haben aber Probleme - PNGLib unterstützt nur bestimmte PNG-Arten und mit TJPEGImage haben selbst 200x200 Pixel große Bilder noch zig KB.

Gibt es vielleicht eine Library, mit der das besser gehen würde? Ich hab schonmal etwas gesucht, aber Libgd und Imagemagick erscheinen mir viel zu umfangreich für meine Zwecke und sonst kann ich nichts finden, was brauchbar aussieht.


Andreas Schilling - Mi 21.01.09 08:14

Um Jpeg zu verkleinern verwende ich Compressionquality. Als Beispiel wie ich aus Bitmap ein Jpeg mache und gleichzeitig verkleinere.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure BmpToJpg(Bild: String);
 var Jpg : TJpegimage;
     Bmp : TBitmap;
begin
  Bmp := Tbitmap.create;
  Jpg := TJpegimage.create;
  try
    Bmp.loadfromfile(Bild);
    Jpg.assign(Bmp);
    Jpg.CompressionQuality := 50;
    Jpg.compress;
    Jpg.savetofile(Dir_ApplExe + 'temp\Bild.jpg');
  finally
    jpg.free;
    bmp.free;
  end;
end;


error - Mi 21.01.09 22:44

Wie gesagt, TJPEGImage läuft nicht richtig. Es geht auch ums Ändern der Abmessungen, nicht ums Komprimieren der Datei.