私はステープラの自動回転機能に矛盾があり、何が起こっているのかを誰かが説明できると考えていました。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度回転しています。ここで
は、元の画像のスクリーンショットだ、あなたはそれが直立だ見ることができます:
ここzoom
スタイルによって処理された後の画像のスクリーンショットです。これは、90度回転させています:
あなたが見ることができるように、私もautorotate
thumbnail
とstandard
スタイルに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
スタイルで回転されるのはなぜですか?