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.
JPEG Qualität und andere Einstellungen
-
- 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
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.
-
- 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
Habs gefunden: Der Unterschied liegt in
vs.
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.
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.
-
- 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
Noch eine Falle: Wenn man die Bilder mit VirtualDub zusammenfügen will, muss Progressive = false sein.