Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi jpeg-Fehler #36 bei sehr großen Dateien (https://www.delphipraxis.net/51232-jpeg-fehler-36-bei-sehr-grossen-dateien.html)

khurrad 8. Aug 2005 21:41


jpeg-Fehler #36 bei sehr großen Dateien
 
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?

Bernhard Geyer 9. Aug 2005 07:24

Re: jpeg-Fehler #36 bei sehr großen Dateien
 
Evtl. bist du an einer 2/4 GB-Grenze und die JPEG-Implementierung in Delphi verwendet nur Win32-API-Aufrufe mit 32-Bit-Parametern.

Beleg mal einfach ein paar MB und probiere es nochmal.

khurrad 9. Aug 2005 16:51

Re: jpeg-Fehler #36 bei sehr großen Dateien
 
Zitat:

Zitat von Bernhard Geyer
Evtl. bist du an einer 2/4 GB-Grenze und die JPEG-Implementierung in Delphi verwendet nur Win32-API-Aufrufe mit 32-Bit-Parametern.

Beleg mal einfach ein paar MB und probiere es nochmal.

Habe ich ausprobiert. Sowohl auf meinem Rechner als auch auf einem anderen Rechner. Es klappt bei genügend kleinen JPGs, bei größeren nicht.

Ich verwende übrigens Delphi 5 Standard.

khurrad 10. Aug 2005 20:31

Re: jpeg-Fehler #36 bei sehr großen Dateien
 
Ich habe inzwischen herausgefunden, daß die Unit jpeg.pas (jpeg.dcu), die mit Delphi 5 ausgeliefert worden ist, tatsächlich einen Programmierfehler enthält. Mit der Unit jpgimg.pas klappt alles hervorragend.

Falls es jemanden gibt, der das gleiche Problem hat: Die Unit findet man auf www.hoerstemeier.com und auch sonst im Internet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz