読者です 読者をやめる 読者になる 読者になる

Memo plus Alpha

メモにプラスアルファを加えて価値ある情報に。

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)のヘッダーに保存される模様。