2016-08-04 37 views
1

我收到與訂書機的自動旋轉功能不一致,並希望有人能解釋發生了什麼。PHP訂書機和Imagine圖像autororate問題

我的風格被定義在雄辯的模型如下:

'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

正如你所看到的,我也有autorotate設置爲true thumbnailstandard風格,但這些圖像沒有被旋轉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

看起來我需要return $image->strip()爲了在自動旋轉圖像後刪除exif數據。