2016-08-04 7 views
1

Я получаю некоторую несогласованность с функциями автотрассировки Степлера и надеялся, что кто-то сможет объяснить, что происходит.PHP Stapler and Imagine Image autororate issue

Моих стилей определяются следующим образом на красноречивых моделях:

'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 значение ИСТИНА для thumbnail и standard стилей, но эти изображения не поворачивается на 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 после автоматического поворота изображения.