Hallo Zusammen,
Ich habe eine kleine Routine zum Verkleinern von JPG-Bildern. Bei vielen Bildern funktioniert es auch wunderbar, bei einigen nicht.
Was die Bilder gemeinsam haben, bei denen es nicht funktioniert, ist, dass sie sehr groß sind (> 2 MB).
Hier mal der Code:
Delphi-Quellcode:
procedure prcResizeJPG(sPath: String; iWidth: Integer; iHeight: Integer);
var
imgBMP: TBitmap;
imgJPG: TJpegImage;
begin
imgJPG := TJpegImage.Create;
try
imgJPG.LoadFromFile(sPath);
imgBMP := TBitmap.Create;
try
imgBMP.Width := iWidth;
imgBMP.Height:= iHeight;
imgBMP.Canvas.StretchDraw(imgBMP.Canvas.Cliprect, imgJPG);
Self.Canvas.Draw(100, 10, imgBMP);
imgJPG.Assign(imgBMP);
imgJPG.SaveToFile(sPath);
finally
imgBMP.free;
end;
finally
imgJPG.free;
end;
end;
Probiere ich diesen Code, stürzt es bei StrechDraw ab. Gibt es eine Möglichkeit, dies zu verbessern?
Sicher, dass es an der Größe liegt und nicht am jpg File?
Delphi-Quellcode:
imgJPG.Assign(imgBMP);
imgJPG.Compress; // <-- fehlt das nicht?
imgJPG.SaveToFile(sPath);
Mavarik