Bilder verkleinern auf max. Dateigröße bei max. Qualität

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
nudgegoonies
Beiträge: 939
Registriert: 16.02.2009 09:35:10

Bilder verkleinern auf max. Dateigröße bei max. Qualität

Beitrag von nudgegoonies » 23.04.2020 10:52:22

Ich suche ein Gimp Plugin oder Programm, das JPEG Bilder so speichert, dass sie eine maximale Dateigröße nicht überschreiten. Das Resultat sollte ein halbwegs brauchbarer Kompromiss aus reduzierter Auflösung und JPEG Qualitätsstufe sein. Da ich es nicht selbst brauche sondern meine Frau, sollte es kein Konsolen-Programm oder -Script sein, sondern ein Gimp Plugin oder eine grafische Anwendung. In den Gimp Plugins bin ich nicht fündig geworden und eine Suche im Netz hat nur Hinweise auf Image-/Graphics-Magic Parameter für Scripte gebracht.
Soft: Bullseye AMD64, MATE Desktop. Repo's: Backports, kein Proposed, eigene Backports. Grafik: Radeon R7 360 MESA.
Hardware: Thinkstation S20, Intel X58, 16GB, Xeon W3530, BCM5755 NIC, EMU10K1 SND, SATA SSD+HDS und DVD+RW.

Benutzeravatar
MSfree
Beiträge: 10774
Registriert: 25.09.2007 19:59:30

Re: Bilder verkleinern auf max. Dateigröße bei max. Qualität

Beitrag von MSfree » 23.04.2020 12:00:00

nudgegoonies hat geschrieben: ↑ zum Beitrag ↑
23.04.2020 10:52:22
Ich suche ein Gimp Plugin oder Programm, das JPEG Bilder so speichert, dass sie eine maximale Dateigröße nicht überschreiten.
Die Kompression eines JPEG-Bildes wird über den sogenannten Q-Faktor gesteuert. Der Q-Faktor ist aber kein Maß für die Kompressionsrate sondern ein Qualitätsmaß, das zwischen 0 und 100 liegen kann. Je größer der Wert desto weniger Kompressionsartefakte hat man.

Der Kompressionsalgorythmus ist nicht dafür vorgesehen, Bilder um einen bestimtmen Faktor zu komprimieren. Wenn du also eine Bestimmte Bildgröße erreichen willst, mußt du das Bild mehrfach mit unterschiedlichen Q-Faktoren komprimieren und das Ergebnis auswählen, das der gewollten Dateigröße am nächsten kommt.

GUIs sind mir für den Zweck nicht bekannt. Ich würde das mit einem Skript lösen, das ein Eingabebild mittels imagemagick (convert) mit unterschiedlichen Q-Faktoren komprimiert und dann alle ausser dem in der gewünschten Größe löscht.

Meiner Erfahrung nach sind Q-Faktoren zwischen 60 und 85 sinnvoll. Unter 60 wird es wirklich unanssehlich und über 85 wird die erreichbare Kompressionsrate zu gering bei gleichzeitig kaum noch steigender Bildqualität.

willy4711

Re: Bilder verkleinern auf max. Dateigröße bei max. Qualität

Beitrag von willy4711 » 23.04.2020 12:11:03

Solltest du zufällig Thunar (Xfce) benutzen, hätte ich da Benutzerdefinierte Aktionen
z.B.:
In anderes Format umwandeln
Bilder verkleinern (%)

Das ganze Paket , dem ich einzelne Aktionen entnommen habe, gibt es hier:
https://gitlab.com/nobodyinperson/thunar-custom-actions

Benutzeravatar
MSfree
Beiträge: 10774
Registriert: 25.09.2007 19:59:30

Re: Bilder verkleinern auf max. Dateigröße bei max. Qualität

Beitrag von MSfree » 23.04.2020 12:17:05

willy4711 hat geschrieben: ↑ zum Beitrag ↑
23.04.2020 12:11:03
...
Bilder verkleinern (%)
...
Meistens verstehen die unter "verkleinern" aber, die Anzahl der Pixel zu reduzieren und nicht die Dateigröße unter Beibehaltung der Pixelzahl zu verkleinern.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Bilder verkleinern auf max. Dateigröße bei max. Qualität

Beitrag von Lord_Carlos » 23.04.2020 12:49:50

Gibt ein imagemagick script was genau das kann: http://www.fmwconcepts.com/imagemagick/ ... /index.php
Muss man es nur noch Benutzterfreundlich machen.

z.B. es konvertiert alle Bilder die in einem bestimmten Ordner sind. Dann muss deine Freu ihre Bilder nur in den Ordner verschieben und das Script anklicken. Dann geht es ganz ohne Konsole.
Oder wie willy sagte, script in deinem Datenmanager hinzufuegen. So das man Bilder mit rechtklicken verkleinern kann.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

willy4711

Re: Bilder verkleinern auf max. Dateigröße bei max. Qualität

Beitrag von willy4711 » 23.04.2020 12:59:22

MSfree hat geschrieben: ↑ zum Beitrag ↑
23.04.2020 12:17:05
Meistens verstehen die unter "verkleinern" aber, die Anzahl der Pixel zu reduzieren und nicht die Dateigröße unter Beibehaltung der Pixelzahl zu verkleinern.
Stimmt
aber man kann ein png z.B, in ein gif umwandeln ---> ergibt bei mir z.B. Die Halbe Dateigröße.
Bei jpg wird es aber fast das Doppelte.
Das webp - Format macht es bei gleicher Pixelzahl um die Hälfte kleiner (mal gerade gespielt)
Vergleich aus Thunar per Klick :mrgreen:
Bild

kannte webp noch gar nicht, scheint aber sehr effektiv zu sein. Mal ein Vergleich (png war das Original)

Code: Alles auswählen

ls -algGh ~/Bilder/Shutter/ |grep "Bildschirmfoto vom 2020-04-02 09-54-47"
-rw-r--r--  1   15M Apr 23 13:13 Bildschirmfoto vom 2020-04-02 09-54-47.bmp
-rw-r--r--  1  2,1M Apr 23 13:14 Bildschirmfoto vom 2020-04-02 09-54-47.jp2
-rw-r--r--  1  992K Apr 23 13:13 Bildschirmfoto vom 2020-04-02 09-54-47.jpeg
-rw-r--r--  1 1006K Apr  2 09:54 Bildschirmfoto vom 2020-04-02 09-54-47.png
-rw-r--r--  1  231K Apr 23 13:14 Bildschirmfoto vom 2020-04-02 09-54-47.webp

nudgegoonies
Beiträge: 939
Registriert: 16.02.2009 09:35:10

Re: Bilder verkleinern auf max. Dateigröße bei max. Qualität

Beitrag von nudgegoonies » 27.04.2020 20:01:52

Danke für die vielen Tipps! Ich hatte schon befürchtet, dass das "Wunderprogramm" nicht dabei bist. Aber das ImageMagick Script ist ein guter Tip. Ich werde es ihr irgendwie GUI-tauglich startbar anbieten. Mit festgelegten Quell und Zielverzeichnis.
Soft: Bullseye AMD64, MATE Desktop. Repo's: Backports, kein Proposed, eigene Backports. Grafik: Radeon R7 360 MESA.
Hardware: Thinkstation S20, Intel X58, 16GB, Xeon W3530, BCM5755 NIC, EMU10K1 SND, SATA SSD+HDS und DVD+RW.

Benutzeravatar
MSfree
Beiträge: 10774
Registriert: 25.09.2007 19:59:30

Re: Bilder verkleinern auf max. Dateigröße bei max. Qualität

Beitrag von MSfree » 27.04.2020 21:41:02

willy4711 hat geschrieben: ↑ zum Beitrag ↑
23.04.2020 12:59:22
kannte webp noch gar nicht, scheint aber sehr effektiv zu sein. Mal ein Vergleich (png war das Original)

Code: Alles auswählen

ls -algGh ~/Bilder/Shutter/ |grep "Bildschirmfoto vom 2020-04-02 09-54-47"
-rw-r--r--  1   15M Apr 23 13:13 Bildschirmfoto vom 2020-04-02 09-54-47.bmp
-rw-r--r--  1  2,1M Apr 23 13:14 Bildschirmfoto vom 2020-04-02 09-54-47.jp2
-rw-r--r--  1  992K Apr 23 13:13 Bildschirmfoto vom 2020-04-02 09-54-47.jpeg
-rw-r--r--  1 1006K Apr  2 09:54 Bildschirmfoto vom 2020-04-02 09-54-47.png
-rw-r--r--  1  231K Apr 23 13:14 Bildschirmfoto vom 2020-04-02 09-54-47.webp
Nunja, bmp ist unkomprimiert und png verwenden eine Kompression, die nicht verlustbehaftet ist. Im Prinzip ist das nur ZIP auf eine Bilddatei angewendet, OK mit ein paar zusätzlichen Optierungen für Bilddaten. Der Kompressionsfaktor ist entsprechend gering, weil Bilddaten einen hohen Zufallsanteil haben. Je höher der Zufallsanteil, desto geringer kann ZIP komprimieren.

jp2, jpeg und webp sind verlustbehaftete Kompressionstechniken. JPEG ist praktisch die Mutter aller verlustbehafteten Kompressionen, die sogar für die Fimkompression MPG1-4 Pate gestanden hat. JPEG basiert auf der diskreten Cosinustranformation, die man durch eine Fourriertransformation errechnen kann. JP2 ist JPEG2000 und basiert auf einer Wavelett-Transformation, ist aber sehr rechenaufwändig und patentgepflastert, daher etwas problematisch. WEBP ist im Grunde "nur" eine Weiterentwicklung von JPEG/MPEG.

Deine Kompressionsbeispiele sagen jedoch praktisch gar nichts über die Leistungsfähigkeit der Kompressionsalgorythmen aus, da du nur irgendwelche Defaults verwendet hast. Mach mal folgendes:

Code: Alles auswählen

convert "Bildschirmfoto vom 2020-04-02 09-54-47.bmp" -quality 80 output80.jpg
convert "Bildschirmfoto vom 2020-04-02 09-54-47.bmp" -quality 60 output60.jpg
convert "Bildschirmfoto vom 2020-04-02 09-54-47.bmp" -quality 40 output40.jpg
convert "Bildschirmfoto vom 2020-04-02 09-54-47.bmp" -quality 20 output20.jpg
ls -l output*.jpg
und "wundere" dich über die unterschiedlichen Dateigrößen und schau dir die Ausgabebilder an, um die zunehmenden Kompressionsartefakte bei abnehmender Qualität zu beurteilen.

Ich habe mir mal ein kleines Programm geschrieben, das JPEG-Dateien auf eine Zielgröße komprimieren kann. Das variiert den JPEG-Steuergunsparameter "QFactor" solange, bis die Zieldateigröße erreicht ist. Damit kann ich ein Testbild meiner Digitalkamera (3000 x 4000 Pixel = 36MB Rohdaten) ohne die Pixelzahl zu verändern sogar auf 500kByte komprimieren :mrgreen:, das Bild sieht dann allerdings ziemlich bescheiden aus.

Code: Alles auswählen

ls -l out*
-rw-r--r-- 1 user user  970499 Apr 27 21:24 out1000.jpg
-rw-r--r-- 1 user user 1990931 Apr 27 21:24 out2000.jpg
-rw-r--r-- 1 user user  467969 Apr 27 21:24 out500.jpg
Ist jeweils das selbe Eingabebild mit unterscheidlich starker JPEG-Kompression.

Antworten