imageMagicを使って反転と回転を行う

<?php
// コマンドラインから画像を取得
    if (count($argv) <= 1){
        echo "no input"; exit;
    }
    $input = $argv&#91;1&#93;;
    $outfile = preg_replace('/\.(jpeg|jpg)$/', '-out.jpeg', $input);
    $cmpfile = preg_replace('/\.(jpeg|jpg)$/', '-cmp.jpeg', $input);

    $i = new Imagick();
    $i->readImage($input);
    $i->stripImage();
    $i->writeImage($cmpfile);
    echo " 回転前: $outfile\n";

    // 回転用に画像を処理
    $img = new Imagick();
    $img->readImage($input);
    // 画像の向きを自動回転
    img_auto_rotate($img);
    // 画像を保存
    $img->writeImage($outfile);
    echo " 回転後: $outfile\n";

    // 画像の向きを自動回転
    function img_auto_rotate(Imagick $img){
        switch ($img->getImageOrientation()){
            case Imagick::ORIENTATION_TOPLEFT:
                break;
            case Imagick::ORIENTATION_TOPRIGHT:
                $img->flopImage();
                break;
            case Imagick::ORIENTATION_BOTTOMRIGHT:
                $img->rotateImage("#000, 180");
                break;
            case Imagick::ORIENTATION_LEFTTOP:
                $img->flopImage();
                $img->rotateImage("#000", -90);
                break;
            case Imagick::ORIENTATION_RIGHTTOP:
                $img->rotateImage("#000", 90);
                break;
            case Imagick::ORIENTATION_RIGHTBOTTOM:
                $img->flopImage();
                $img->rotateImage("#000", 90);
                break;
            case Imagick::ORIENTATION_LEFTBOTTOM:
                $img->rotateImage("#000", -90);
                break;
            default:
                break;
        }
        $img->setImageOrientation(Imagick::ORIENTATION_TOPLEFT);
        return $img;
    }