2016-08-04 4 views
1

私はステープラの自動回転機能に矛盾があり、何が起こっているのかを誰かが説明できると考えていました。PHPステープラと画像自動化の問題を想像してください

私のスタイルは雄弁モデル上で、以下のように定義されています。

'styles' => [ 
    'thumbnail' => [ 
     'dimensions' => '300', 
     'auto_orient' => true, 
     'convert_options' => ['quality' => 100], 
    ], 
    'standard' => [ 
     'dimensions' => 'x275', 
     'auto_orient' => true, 
     'convert_options' => ['quality' => 100], 
    ], 
    'zoom' => function($file, $imagine) { 
     $image = $imagine 
      ->setMetadataReader(new \Imagine\Image\Metadata\ExifMetadataReader) 
      ->open($file->getRealPath()); 

     // Auto rotate the image 
     $filter = new \Imagine\Filter\Basic\Autorotate; 
     $filter->apply($image); 

     // Get the current size 
     $size = $image->getSize(); 

     // Scale down to zoom size only if 
     // image is wide enough. 
     if ($size->getWidth() > 1280) { 
      $newSize = $size->widen(1280); 
      $image->resize($newSize); 
     } 

     return $image; 
    } 
] 

問題は、特定のイメージのために、zoomスタイルが正しく動作していない、ということです。原稿がすでに直立していても、画像は90度回転しています。ここで

は、元の画像のスクリーンショットだ、あなたはそれが直立だ見ることができます:

enter image description here

ここzoomスタイルによって処理された後の画像のスクリーンショットです。これは、90度回転させています:

enter image description here

あなたが見ることができるように、私もautorotatethumbnailstandardスタイルにtrueに設定されますが、それらの画像を90度回転されていないを持っているし、処理後に正しく表示されます。

奇妙なことは、元の画像のexif方向データをチェックすると、値が6であることです。つまり、画像は90度回転する必要があります。その場合、他のスタイルもなぜ回転しないのでしょうか?

$imagine = new Imagine\Imagick\Imagine; 
$image = $imagine->open('https://s3.amazonaws.com/path/to/original/image.jpg'); 
echo $image->metadata()->toArray()['ifd0.Orientation']; 

// Output is 6 

このイメージがまだ直立していると、exifの向きが6であるのはなぜですか?また、画像がzoomスタイルで回転されるのはなぜですか?

答えて

0

画像を自動回転した後にexifデータを削除するには、return $image->strip()のように見えます。

関連する問題