PHPでexif情報を削除する(iPod, iPhoneで画像が回転する問題)
iPod, iPhoneで撮影した画像は、特殊なExifがつき、ウェブにアップロードされたときに画像が意図しない方向に回転してしまう。
その場合、(1)exifを削除して、(2)アップロード後に画像を回転することで対応。
(1)exifの削除
これにはimagemagickを使う。
さくらインターネットのレンタルサーバーを利用している場合、コントロールパネルから「PHP設定の編集」でphp.iniにextension = imagick.soを追加。
phpでの呼び出しはsystem関数を利用する。パスは以下の通り:
system("/usr/local/bin/convert -strip $filepath $filepath");
ここでは、ファイル名を変えずに元のファイルにexifをとったファイルを上書きしている。なお、ダブルクォーテーションの中は変数が展開されるので、$filepathにはあらかじめファイル名をいれておく。
(2)ファイルの回転
ファイルの回転にはgdのImageRotateを使う。これのライブラリはさくらでは設定なしに使用出来る。
//ファイル名と回転角度をpostで受け取る
$filepath = htmlspecialchars(@$_POST{"filepath"}, ENT_QUOTES);
$degree = htmlspecialchars(@$_POST{"degree"}, ENT_QUOTES);
//画像を読み込む
$original_image = ImageCreateFromJPEG($filepath);
//画像の回転
$newimage = ImageRotate($original_image, $degree, 0);
//ファイルの上書き保存
imagejpeg($newimage,$filepath,100);
これでファイルが回転した状態で上書き保存される。なお、回転情報はexifではなく、JPEG(JFIF)のヘッダーに保存される模様。