Ich habe eine Anforderung, alle hochgeladenen Bilder mit weniger als 500kb Dateigröße zu komprimieren, ich habe auf Google gesucht und alles, was ich sehen kann, ist:
%Vor%Wenn ich mit diesem Ansatz gehe, muss ich prüfen, ob das Bild weniger als 500 kb nach der Komprimierung ist, wenn nicht, dann gehe für niedrigere Qualität und Größe.
Gibt es einen besseren Weg?
JPEG-Komprimierung ist vorher nicht vorhersehbar. Die von Ihnen beschriebene Methode compress & amp; messen & amp; versuche es noch einmal, ist der einzige Weg, den ich kenne.
Sie können versuchen, eine Reihe von typischen Bildern mit unterschiedlichen Qualitätseinstellungen zu komprimieren, um eine Vorstellung von dem optimalen Startpunkt zu erhalten. Außerdem können Sie erraten, wie sich Änderungen an der Einstellung auf die Größe auswirken. Das bringt Sie auf die optimale Größe ohne zu viele Iterationen.
Sie können auch ein dateiähnliches Objekt an die Funktion save
übergeben, die nicht auf die Festplatte schreibt, sondern nur die Bytes zählt. Sobald Sie die besten Einstellungen festgelegt haben, können Sie sie erneut in einer Datei speichern.
Edit: Hier ist eine Implementierung eines geeigneten Bytezählungs-Dateiobjekts. Überprüfen Sie size
nach dem Speichern.
Edit 2: Hier ist eine binäre Suche mit den oben genannten, um die optimale quality
in der kleinsten Anzahl von Versuchen zu erhalten.
Tags und Links python image compression