phpでExifを保存した写真回転

phpで写真回転をすると、Exif情報がなくなってしまうので
Exifを保存できるような回転方法を探してました。


検索したら3つぐらい見つかりました。


PHPJPEGロスレス回転
http://d.hatena.ne.jp/rsky/20070504/1178275745


⇒ 回転&Exif情報の保存ができる。
探していた機能とちょうど合うのですが、180度回転させると
画像が崩れる(自分のサーバでは、でしょうが)ので
利用は断念しました。


■phpExifRW
http://www.vinayras.com/project/phpexifrw.php


■PEL: PHP Exif Library
http://pel.sourceforge.net/


こちらはExif情報の書き込みができるので、
phpで写真回転させて、回転前の写真から回転後の写真にExif情報を
コピーすれば保存されました。


どっちも古いのですが、今回はPELを選択しました。

require_once('PelJpeg.php');

$img_from= 'original.jpg';
$img_to  = 'rotate.jpg';
$rotate  = 90; // 90度回転

// 回転
$src_id = imagecreatefromjpeg($img_from);
$rotate_id = imagerotate($src_id, $rotate, 0);
imagedestroy($src_id);
imagejpeg($rotate_id, $img_to);
imagedestroy($rotate_id);

// Exif情報のコピー
$input_jpeg = new PelJpeg($img_from);
$exif = $input_jpeg->getExif();
if ($exif != null){
    $output_jpeg = new PelJpeg($img_to);
    $output_jpeg->setExif($exif);
    file_put_contents($img_to, $output_jpeg->getBytes());
}