[PHP] Bild auf feste Dateigröße komprimieren

groe

lo0l
ID: 134786
L
26 April 2006
224
16
Hi,

ich hab ein JPG-Bild und möchte es auf ne bestimmte Dateigröße komprimieren. Eigentlich kein Problem, ImageJPEG hat ja den Parameter $quality. Dieser Parameter wird allerdings in Prozent von 0 - 100 angegeben, nicht in kB :ugly:

Wie kann ich nun möglichst einfach und effizient die Grafik auf diese bestimmte Dateigröße bringen?

Mein Lösungsansatz wäre folgender:
PHP:
// Pseudocode
$Zähler auf 100 setzen
Solange das Bild nicht im akzeptablen Dateigrößenbereich liegt:
- Bild komprimiert speichern mit einer Kompression von $Zähler
- $Zähler um 1 verkleinern

Allerdings doch ziemlich rechenaufwendig :-? Kann mir jemand helfen?

LG
groe
 
nach dem motto der binären suche machen ;)
also erst halbieren, ist es dann noch zu groß wieder halbieren etc
ist es dann kleiner als gefordert könnte man eventuell nochmal hochschalten auf vorletzteOptimierung-(vorletzteOptimierung-letzteOptimierung)/2
 
Jup, ist auf jeden Fall mal besser :>

Gibts da vielleicht noch ne andere Möglichkeit, die Dateigröße "vorherzusehen"?^^
 
Nimm doch mal 10-20 unterschiedliche Testbilder (vom Ava bis zum 10-Megapixel-Foto) und lass dir diese mit je 11 verschiedenen Qualitäts-Einstellungen (0, 10, ..., 100) komprimieren. Evtl. kannst du dann einen Verkleinerungsfaktor berechnen (z.B. Qualität 60 :arrow: Aus 100kb werden 85kb :arrow: Faktor 0,85), so dass du bei neuen Bildern abschätzen kannst, welche Einstellung du brauchst (Das Bild hat 180kb, soll aber nur 150kb haben :arrow: 150/180=0,83~=0,85 :arrow: Am Anfang mit Qualität 60 probieren).

System klar?