phpでExifを保存した写真回転
phpで写真回転をすると、Exif情報がなくなってしまうので
Exifを保存できるような回転方法を探してました。
検索したら3つぐらい見つかりました。
■PHPでJPEGロスレス回転
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()); }