サーバに画像をアップロードさせるサービスを構築する場合
ケータイで撮った写真などが横になってる事があります。
そんな時はシステム側で調整してやると親切かと思います。
画像には様々な情報(EXIF)が保存されているので、
画像方向情報(Orientation)を見て回転させてやります。
※拡張モジュールのImageMagickとExifを使用します。
test.php
<?php $file = 'test.jpg'; fixOrientation($file); function fixOrientation($file) { $is_exists = file_exists($file); if ($is_exists === false) { return false; } $exif = exif_read_data($file); $orientation = isset($exif['Orientation']) ? $exif['Orientation'] : 0; $image = new Imagick($file); switch ($orientation) { // EXIF情報なし case 0: return; // そのままでOK case 1: return; // 上下反転 case 2: $image->flopimage(); break; // 180度反転 case 3: $image->rotateimage(new ImagickPixel(), 180); break; // 左右反転 case 4: $image->flipimage(); break; // 270度回転&上下反転 case 5: $image->rollimage(new ImagickPixel(), 270); $image->flipimage(); break; // 90度回転 case 6: $image->rotateimage(new ImagickPixel(), 90); break; // 90度回転&上下反転 case 7: $image->rotateimage(new ImagickPixel(), 90); $image->flipimage(); break; // -90度回転 case 8: $image->rotateimage(new ImagickPixel(), -90); break; } $image->writeimages($file, true); $image->destroy(); }