ユーザーがアップロードした画像を ImageMagick を使用してさまざまなサム形式にサイズ変更する PHP 写真共有アプリケーションがあります。
ファイルサイズを節約するための一見「賢い」方法として、次のようにこれらのサムからexif情報を削除しています。
$imagick = new Imagick($image);
$imagick->stripImage();
$imagick->writeImage($image);
これは機能します。EXIF 情報は削除されます。30 KB のサムが 12 KB 節約され、18 KB になります。このようなサムネイルを 1 つのページに多数表示すると、大幅な節約になります。
ただし、問題は、少しうまく機能しすぎることです。結果の画像は、ストリップされていないバージョンと比較して、多くの色情報が失われ、「フラット」に見えます。
これまでの調査に基づいて、私の理論では、次のいずれかまたは両方が正しいと考えています。
- Imagick は、ストリッピング プロセスの一部として重要なカラー プロファイル情報を破棄します
- Imagick は保存時に画像を再圧縮し、品質を低下させます
問題の原因に関係なく、画質や色自体に影響を与えないように EXIF 情報を削除する方法を探しています。
これは可能ですか?
アップデート:
Gerald Schneider の回答に基づいて、画像を「剥ぎ取る」前に、品質設定を 100% に強制しようとしました。
$imagick = new Imagick($image);
$imagick->setCompression(imagick::COMPRESSION_JPEG);
$imagick->setCompressionQuality(100);
$imagick->stripImage();
$imagick->writeImage($image);
残念ながら、問題は残っています。以下は、品質を 100% に設定しているにもかかわらず、画像がまだ平坦化されている出力例です。