アップロードされた画像をローカルで一括してサイズ変更し、サムネイルを作成するスクリプトを作成しました。問題は、一部の画像が垂直方向に配置されているが、サイズ変更後に水平方向に回転する場合です。
これは、画像の exif の向きが原因で発生します。 PHP 経由で画像から方向 exif を削除する簡単な方法はありますか? Imagick でそれができることは知っていますが、インストールできない/したくないのです。
それなしで解決策はありますか?
現在、このような画像を画像エディタで開き、exif 情報を保持せずに再保存することで、この問題を解決しています。その後、スクリプト内でそのような画像のサイズを変更すると、結果は正しくなります。
つまり、サイズを変更する前に、PHP スクリプトで画像から exif を削除したいだけです。
exifの方向を確認する機能を試してみました:
リーリーしたがって、追加のライブラリをインストールせずに、おそらく既に含まれている GD などを使用して、Imagick 部分を別のものに置き換える必要があります。
それでは、exif を削除する代わりに画像を回転することにしましたが、結果的には同じ効果が得られました。そこで、exif 方向の値 (存在する場合) を確認し、その値に基づいて imagerotate を使用して画像のサイズを変更します。結果は完璧であり、追加のインストールやライブラリは必要ありません。
リーリー