ориентация — PHP getimagesize () смешивает ширину и высоту

Я использую PHP-скрипт, который загружает изображение, затем получает размеры с помощью PHP getImageSize (), а затем выполняет действия с изображением в соответствии с ориентацией изображений (книжной или альбомной).

Однако (версия PHP 5.4.12) на немного .JPG файлы он получает высоту и ширину, как они есть, и в немного (взятый с iPhone) он меняет их, думая, что портретные картинки на самом деле пейзажные.
Это происходит не только на моем локальном Wampserver, но и на удаленном сервере (с другой версией PHP).

Кто-нибудь знает, как

1) починить это или
2) найти способ обойти проблему?

7

Решение

Некоторые камеры содержат тег ориентации в разделе метаданных самого файла. Это позволяет устройству каждый раз показывать правильную ориентацию независимо от ориентации изображения в исходных данных.

Похоже, что Windows не поддерживает чтение этого тега ориентации, а просто читает данные пикселей и отображает их как есть.

Решением было бы либо изменить тег ориентации в метаданных поврежденных изображений для каждого изображения, либо

Используйте PHP exif_read_data() Функция для чтения ориентации и ориентации вашего изображения соответственно так:

<?php
$image = imagecreatefromstring(file_get_contents($_FILES['image_upload']['tmp_name']));
$exif = exif_read_data($_FILES['image_upload']['tmp_name']);
if(!empty($exif['Orientation'])) {
switch($exif['Orientation']) {
case 8:
$image = imagerotate($image,90,0);
break;
case 3:
$image = imagerotate($image,180,0);
break;
case 6:
$image = imagerotate($image,-90,0);
break;
}
}
// $image now contains a resource with the image oriented correctly
?>

Рекомендации:

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]