Hallo,
ich habe folgendes Problem:
Ich möchte gerne eine Bitmap in ein JPG-Bild umwandeln und es dann als Datei auf meiner Festplatte speichern. Dafür verwende ich folgende Prozedur:
Delphi-Quellcode:
procedure StoreBitmapAsJPEG (bm: graphics.TBitmap; jpname: string;
Kompressionsqualitaet: Integer = 100);
var
jp: TJpegImage;
begin
jp:= TJpegImage.Create;
try
with jp do
begin
CompressionQuality:=Kompressionsqualitaet;
Assign(bm);
(* Das folgende führt zu Fehlern bei übergroßen Bildern. *)
SaveToFile(jpname)
end; (* with *)
finally
jp.Free;
end;
end;
Das klappt wunderbar, wenn die übergebene Bitmap nicht sehr groß ist. 1024x768 zum Beispiel wird anstandslos gespeichert. Wenn ich aber größere Bitmaps auf diese Weise als JPEG-Datei speichern will (zum Beispiel 984x1190), gibt das Programm den JPEG-Fehler #36 aus. Das ist: "output file write error - out of disk space?"
Ich versichere hoch und heilig: Auf meiner Festplatte ist noch massig Platz (8 GB). Außerdem kann ich ohne weiteres die Bitmap als BMP-Datei abspeichern, und die ist sicherlich größer als die JPEG-Datei. Was mache ich falsch?