Wie entferne ich exif aus einem JPG, ohne die Bildqualität zu verlieren?

Ich habe eine PHP-Fotofreigabe-Anwendung, in der vom Benutzer hochgeladene Bilder mithilfe von ImageMagick in verschiedene Miniaturformate umgewandelt werden.

Als eine anscheinend "clevere" Möglichkeit, Dateigröße zu sparen, entferne ich Exif-Informationen wie folgt von diesen Thumbs:

$imagick = new Imagick($image);
$imagick->stripImage();
$imagick->writeImage($image);

Das funktioniert. Es werden die EXIF-Informationen entfernt, wobei ein Daumen von 30 KB 12 KB speichert und zu 18 KB wird. Eine erhebliche Ersparnis, wenn viele solcher Thumbnails auf einer einzigen Seite angezeigt werden.

Das Problem ist jedoch, dass es etwas zu gut funktioniert. Die resultierenden Bilder scheinen eine Menge Farbinformationen zu verlieren und sehen im Vergleich zu ihren nicht gestrippten Versionen "flach" aus.

Auf der Grundlage meiner bisherigen Forschung gehe ich davon aus, dass eine oder beide der folgenden Aussagen zutrifft:

Imagick verwirft wichtige Farbprofilinformationen als Teil des AbisolierprozessesImagick komprimiert das Bild beim Speichern neu und verliert an Qualität

Unabhängig von der Ursache des Problems suche ich nach einer Möglichkeit, EXIF-Informationen so zu entfernen, dass sie die Bildqualität oder die Farbe selbst nicht beeinträchtigen.

Ist das überhaupt möglich?

Aktualisieren:

Basierend auf Gerald Schneiders Antwort habe ich versucht, die Qualitätseinstellung auf 100% zu erhöhen, bevor ich das Bild "gestrippt" habe:

$imagick = new Imagick($image);
$imagick->setCompression(imagick::COMPRESSION_JPEG);
$imagick->setCompressionQuality(100);
$imagick->stripImage();
$imagick->writeImage($image);

Leider bleibt das Problem bestehen. Nachfolgend finden Sie ein Beispiel für eine Ausgabe, bei der die Qualität trotz einer Einstellung von 100% immer noch reduziert ist.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage