0

少し前に、オンライン コミュニティにアップロードされた画像から EXIF データを読み取る方法を書きました。写真から方向を取得した後、ファイルを正しい方向に回転させました。私のスクリプトからの短い部分のみ:

public function rotate($sourceFile, $targetFile, $orienation)
{
    switch($orienation){
        case 3: $degrees = '180'; break;
        case 6: $degrees = '90'; break;
        case 8: $degrees = '270'; break;
        default: $degrees = '0';
    }

    $file = $sourceFile . DS . $targetFile;
    $rotate = GlobalConfig::BIN_IMAGICK_CONVERT . ' -rotate ' . $degrees . ' ' . $file . ' ' . $file;
    exec($rotate);
}

私のスクリプトは機能しています。しかし、私の質問は、Facebook のような他の大企業が、アップロードされた写真の回転をどのように処理するかということです。私の解決策は確かに最善ではないからです。

4

1 に答える 1

1

より良いアプローチはGDライブラリを使用することだと思います.コードは次のようになります

// input
$image = 'myfile.jpg';

//read orientation information from EXIF

$exif = exif_read_data($filename);
$ort = $exif['IFD0']['Orientation'];

//then based on $ort you can determine the rotation degree,
//check the link below for more info

//rotation degree
$degrees = 180;

// create "image object"
$source = imagecreatefromjpeg($image) ;

// rotate
$rotate = imagerotate($source, $degrees, 0) ;

// set the header
header('Content-type: image/jpeg') ;

// output
imagejpeg($rotate) ;

詳細: Exif Orientation Tag

于 2012-04-23T08:43:47.050 に答える