Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Farbfehler bei Jpeg.SaveToFile (https://www.delphipraxis.net/143401-farbfehler-bei-jpeg-savetofile.html)

PeterPanino 15. Nov 2009 02:21


Farbfehler bei Jpeg.SaveToFile
 
Hallo,

wenn ich mit Jpeg.SaveToFile ein Bild speichere, treten beim gespeicherten Bild massive Farbfehler (Falschfarben) auf, wenn die Farbtiefe in Windows auf 16 Bit eingestellt ist. Wenn die Windows-Farbtiefe auf 32 Bit eingestellt ist, treten diese Farbfehler nicht auf:

Delphi-Quellcode:
Jpeg := TJpegImage.Create();
try  
  Jpeg.Assign(MyImage.Picture.Bitmap);
  //Jpeg.PixelFormat := jf8Bit; // erzeugt eine NullByte-Datei! 
  Jpeg.SaveToFile(F);
finally
  Jpeg.Free;
end;
Wie kann ich das vermeiden, da ich doch davon ausgehen muss, dass zumindest einige Anwender die Farbtiefe auf 16 Bit eingestellt haben?

Eigenartigerweise treten die Farbfehler nicht beim ersten Speichern als JPG auf, sondern erst beim 2. Mal, und zwar in dieser Reihenfolge:

1. Speichern als JPG wie oben im Beispiel-Code: Keine Farbfehler
2. Speichern als BMP:
Delphi-Quellcode:
MyImage.Picture.Bitmap.SaveToFile(F);
3. Speichern als JPG wie oben im Beispiel-Code: Hier tritt der Fehler auf!

Luckie 15. Nov 2009 02:57

Re: Farbfehler bei Jpeg.SaveToFile
 
Welche Kompression?

PeterPanino 15. Nov 2009 03:07

Re: Farbfehler bei Jpeg.SaveToFile
 
Zitat:

Zitat von Luckie
Welche Kompression?

Hallo Luckie,

ich verwende nur den obigen Code, keine Kompression.

PeterPanino 15. Nov 2009 03:30

Re: Farbfehler bei Jpeg.SaveToFile
 
Wenn ich das Bild wiederholt als JPG abspeichere, treten KEINE Farbfehler auf:

1. Speichern als bild1.JPG wie oben im Beispiel-Code: Keine Farbfehler
2. Speichern als bild2.JPG wie oben im Beispiel-Code: Keine Farbfehler
3. Speichern als bild3.JPG wie oben im Beispiel-Code: Keine Farbfehler
4. Speichern als bild4.JPG wie oben im Beispiel-Code: Keine Farbfehler
5. Speichern als bild5.JPG wie oben im Beispiel-Code: Keine Farbfehler
usw.

Also muss es etwas mit dem Zwischenschritt Nr. 2 im obigen Beispielcode zu tun haben, wo das Bild als BMP abgespeichert wird. Aber wie kann das reine Speichern eines Bildes als BMP eine Auswirkung auf das Speichern als JPG haben, noch dazu wenn die Bitmap vor dem Speichern als JPG mit ASSIGN kopiert wird?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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