JPEG Qualität und andere Einstellungen

Rund um die LCL und andere Komponenten
Antworten
Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

JPEG Qualität und andere Einstellungen

Beitrag von Timm Thaler »

Um ein Bild in einem Konsolenprogramm zu bearbeiten verwende ich fpwritejpeg und fpreadjpeg.

Laut fpcsrc sollte es da Optionen wie reader.Performance und writer.CompressionQuality geben. Wenn ich versucht die zu verwenden, bekomme ich aber die Fehlermeldungen Error: identifier idents no member "Performance"

hread.Performance := jpBestQuality; //jpBestSpeed;
hwrite.CompressionQuality := 80;

Wie kann ich die Kompression bei Jpeg setzen? Besser noch: Bekomme ich die Kompression eines geladenen Jpegs heraus, denn ich möchte das bearbeitete Bild mit gleicher Kompression abspeichern?

Hier http://www.lazarusforum.de/viewtopic.php?p=64557#p64557 scheint das mit Performance und CompressionQuality zu funktionieren.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: JPEG Qualität und andere Einstellungen

Beitrag von wp_xyz »

Timm Thaler hat geschrieben:Um ein Bild in einem Konsolenprogramm zu bearbeiten verwende ich fpwritejpeg und fpreadjpeg.

Laut fpcsrc sollte es da Optionen wie reader.Performance und writer.CompressionQuality geben. Wenn ich versucht die zu verwenden, bekomme ich aber die Fehlermeldungen Error: identifier idents no member "Performance"

hread.Performance := jpBestQuality; //jpBestSpeed;
hwrite.CompressionQuality := 80;

Wie kann ich die Kompression bei Jpeg setzen? Besser noch: Bekomme ich die Kompression eines geladenen Jpegs heraus, denn ich möchte das bearbeitete Bild mit gleicher Kompression abspeichern?

Hier http://www.lazarusforum.de/viewtopic.php?p=64557#p64557 scheint das mit Performance und CompressionQuality zu funktionieren.


Da wirst du irgendetwas falsch machen - das Programm in dem Link funktioniert. Auch kann ich in dem Beispiel die CompressionQuality heruntersetzen (5) und erhalte eine deutlich schlechtere Bildqualität. Wegen der Fehlermeldung: Vielleicht hast du Performance nicht auf den Reader, sondern den Writer angewendet.

Die Kompression wird, soviel ich weiß, nirgendwo im Bild abgespeichert.

Mehrfache Jpeg-Komprimierung kann zu einem Qualitätsverlust führen.

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: JPEG Qualität und andere Einstellungen

Beitrag von Timm Thaler »

Habs gefunden: Der Unterschied liegt in

Code: Alles auswählen

  hread : TFPCustomImageReader;
  hwrite : TFPCustomImageWriter;

vs.

Code: Alles auswählen

  hread : TFPReaderJPEG;
  hwrite : TFPWriterJPEG;


Etwas Anderes habe ich nicht geändert. Das ist anscheinend einerseits in fpimage und andererseits in fpwritejpeg / fpreadjpeg definiert.

Die erste Variante hab ich aus http://www.lazarusforum.de/viewtopic.php?p=64592#p64592 im gleichen Thread. Irgendwie sehr verwirrend mit den ganzen Image-Libs.

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: JPEG Qualität und andere Einstellungen

Beitrag von Timm Thaler »

Noch eine Falle: Wenn man die Bilder mit VirtualDub zusammenfügen will, muss Progressive = false sein.

Antworten