2016-01-25 2 views
0

У меня возникли проблемы с imagecreatefromjpeg и вращением изображения.imagecreatefromjpeg невращающееся изображение

Чтобы быть более конкретным:

Изображение # 1 https://dl.dropboxusercontent.com/u/9271284/stackoverflow/20160124112643911541_orig.jpg вращается должное imagecreatefromjpeg (Еxif-надстройка почитается), но не в Picasa или Win10 для просмотра фото.

В моем коде нету вращения, когда я говорю «правильно повернут imagecreatefromjpeg». Я имею в виду это, литературный. Просто делать

$img = imagecreatefromjpeg($filename); 

изображение загружается из файла и повернуто должным образом. Я запускаю PHP 5.5.31-2 + deb.sury.org ~ trusty + 1 с GD версии 2.1.1-dev.

Изображение # 2 https://dl.dropboxusercontent.com/u/9271284/stackoverflow/20160125070736520868_orig.jpg не повернуто надлежащим образом imagecreatefromjpeg (тег exif не удостоин), но правильно повернут в Picasa и Win10 Photo viewer.

Кроме того, использование превосходных результатов Exif Viewer Jeffrey http://regex.info/exif.cgi соответствует тому, что я вижу из imagecreatefromjpeg.

+0

Не могли бы вы отобразить код вращения? –

+0

Я должен был быть более ясным в своем вопросе, нет кода вращения. Я обновлю. – Vnuk

+0

Итак, откуда вы знаете, если он повернут или нет? 'getimagesize' возвращает правильные значения для обоих изображений. –

ответ

0

Несколько контр-интуитивно, это изображение # 2, которое отображается правильно и изображение № 1, которое сломано.

Оба изображения имеют значение ориентации EXIF ​​6, то есть изображение поворачивается на 90 градусов против часовой стрелки. (Обратитесь к this excellent post об ориентации EXIF ​​для более подробной информации.)

imagecreatefromjpeg не преобразует изображения в любом случае. Загружает изображение «raw». Похоже, что он повернут, потому что ваш просмотрщик по умолчанию (миниатюра Windows/Windows Photo Viewer?) автоматически делает это на основе значения EXIF. Jeffrey's Exif Viewer также показывает исходное изображение, поэтому ваши результаты согласуются.

В соответствии с этим значением, чтобы правильно отображать как изображения, которые вы должны выполнить вращение по часовой стрелке на 90 градусов преобразования:

$img = imagerotate($img, -90, 0); 

Это дает следующий результат (изображения масштабируются здесь):

Изображение # 1 :

enter image description here

изображение # 2:

enter image description here

Это именно то, что я вижу для обоих изображений в программе просмотра фотографий Win8. Так как изображение # 1 имеет неправильное значение ориентации, нет возможности правильно его повернуть с помощью кода.

+0

И это явно неправильно для изображения # 1. Какова ваша точка зрения? – Vnuk

+0

У вашего изображения неправильное значение ориентации. Невозможно правильно отобразить его на основе значения ориентации. – timclutton

+0

Первое изображение укушено глупым редактором. Спасибо, что открыли мне глаза. – Vnuk

Смежные вопросы