2016-08-04 25 views
1

Ich bekomme einige Inkonsistenz mit der Autorotate-Funktionalität von Hefter, und hoffte, jemand könnte erklären, was passiert.PHP Hefter und Stellen Sie sich Bild autororate Problem

sind meine Arten definiert als auf ein Eloquent Modell folgt:

'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; 
    } 
] 

Das Problem ist, dass für ein bestimmtes Bild, das zoom Stil nicht richtig funktioniert. Es dreht das Bild um 90 Grad, obwohl das Original bereits aufrecht ist.

Hier ist ein Screenshot des Originalbildes, können Sie es aufrecht sehen:

enter image description here

Hier ist ein Screenshot des Bildes nach dem zoom Stil verarbeitet werden. Es wird um 90 Grad gedreht:

enter image description here

Wie Sie sehen können, habe ich auch autorotate Satz gilt für die thumbnail und standard Stile, aber diese Bilder sind nicht mehr als 90 Grad gedreht wird und korrekt angezeigt werden nach der Verarbeitung.

Die seltsame Sache ist, dass, wenn ich die Exif-Ausrichtung Daten für das Originalbild überprüfen, hat es einen Wert von 6, was bedeutet, dass das Bild um 90 Grad gedreht werden soll. Wenn das der Fall ist, warum werden die anderen Stile auch nicht gedreht?

$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 

Also ich frage mich, warum die Exif-Ausrichtung 6 ist, wenn dieses Bild bereits aufrecht ist. Warum wird das Bild nur für den Stil gedreht?

Antwort

0

Sieht so aus, als müsste ich return $image->strip(), um die Exif-Daten nach dem automatischen Drehen des Bildes zu entfernen.