GDI+ & JPEG - vorausichtliche Dateigröße berechnen
-
Hi
Ich schreibe gerade einen kleinen jpeg-Resizer. Bin jetzt soweit dass ich jpg-Dateien mit Hilfe von GDI+ laden und mit variablen Qualiätseinstellungen (1 bis 100) auf die Platte schreiben kann.
Die Frage ist wie ich die Qualitätseinstellung in Abhängigkeit einer gewünschten Dateigröße berechnen kann. Ein Großteil der jpegs ist ja bereits komprimiert und so funktioniert ein einfaches (gegebene Dateigröße)/(gewollte Dateigröße)*100 nicht. Die aktuelle Qualitätsstufe wird aber anscheinend auch nirgends in der jpg zwischengespeichert.
Die Lösung sich langsam an die beste Einstellung heranzutasten finde ich auch nicht wirklich praktikabel.
Ich hab schonmal versucht die Datei mit 100 abzuspeichern und von dieser Dateigröße auf die gewünscht zu schließen. Ebenfalls ohne Erfolg.Ich hoffe dass irgendwer eine Idee hat.
gruß
rean
-
Ähm.
Geht nicht wirklich. Ein JPEG welches z.B. ganz schwarz ist (alles RGB 0,0,0) wird mit Qualität 100 wohl gleich gross wie mit Qualität 0 sein.
Ein JPEG welches wirklich viel hochfrequente Anteile hat (verrauschtes Foto) wird dagegen mit 100 wesentlich grösser sein als mit 50 oder gar 0.
Bei einem sehr "sauberen" Foto wird dann der Unterschied zwischen vielleicht 90 und 80 garnicht gross sein, der zwischen 50 und 40 aber vielleicht viel grösser.
Kommt eben alles auf den Bildinhalt an.Die schnellste Möglichkeit wäre wahrscheinlich einfach eine binäre Suche, damit müsstest du mit 7 Versuchen das beste Ergebniss haben. Weitere Optimierungen bringen wahrscheinlich eher wenig, da du kaum unter 4-5 Versuche kommen wirst um den optimalen Wert zu finden.
Allerdings hatte ich noch nie einen Fall wo es wirklich viel gebracht hätte einzelne Files auf eine bestimmte Grösse festzunageln. IMHO ist es so-gut-wie-immer sinnvoll sich eine bestimmte Qualitätseinstellung rauszusuchen (die eben noch akzeptabel "schön" ist), und dann einfach alle Bilder mit dieser Qualität abzuspeichern.
-
Ja läuft wohl drauf hinaus dass ich es so machen muss

Danke für die schnelle Antwort
