個人的メモ
iPhoneなどから画像をアップロードするときなどに、画像が回転して表示されてしまう場合がある。
原因はExifのOrientationの値だが、これをPHPのImageMagickを使って修正する。

以下例。

<?php
$image = new Imagick($imagePath);
$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;
}
$image->destroy();
$image = null;
?>

PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)
PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)