スマホからアップロードされた画像を回転処理する
スマホから縦で撮影した画像をアップロードした際に
パソコンから閲覧すると画像が横向きになることがある
Exifの『Orientation』の値が原因で、これをPHPのImageMagickを使って修正する
$path = 'image.jpg'; $image = new Imagick($path); $format = strtolower($image->getImageFormat()); if($format === 'jpeg') { $orientation = $image->getImageOrientation(); switch ($orientation) { case imagick::ORIENTATION_UNDEFINED: break; case imagick::ORIENTATION_TOPLEFT: break; case imagick::ORIENTATION_TOPRIGHT: $image->flopImage(); $image->setimageorientation(imagick::ORIENTATION_TOPLEFT); $image->writeImage(); break; case imagick::ORIENTATION_BOTTOMRIGHT: $image->rotateImage(new ImagickPixel(), 180); $image->setimageorientation(imagick::ORIENTATION_TOPLEFT); $image->writeImage(); break; case imagick::ORIENTATION_BOTTOMLEFT: $image->rotateImage(new ImagickPixel(), 180); $image->flopImage(); $image->setimageorientation(imagick::ORIENTATION_TOPLEFT); $image->writeImage(); break; case imagick::ORIENTATION_LEFTTOP: $image->rotateImage(new ImagickPixel(), 90); $image->flopImage(); $image->setimageorientation(imagick::ORIENTATION_TOPLEFT); $image->writeImage(); break; case imagick::ORIENTATION_RIGHTTOP: $image->rotateImage(new ImagickPixel(), 90); $image->setimageorientation(imagick::ORIENTATION_TOPLEFT); $image->writeImage(); break; case imagick::ORIENTATION_RIGHTBOTTOM: $image->rotateImage(new ImagickPixel(), 270); $image->flopImage(); $image->setimageorientation(imagick::ORIENTATION_TOPLEFT); $image->writeImage(); break; case imagick::ORIENTATION_LEFTBOTTOM: $image->rotateImage(new ImagickPixel(), 270); $image->setimageorientation(imagick::ORIENTATION_TOPLEFT); $image->writeImage(); break; } }