Я пытаюсь получить информацию об ориентации изображения с помощью функции PHP exif_read_data (), но, к сожалению, я не могу получить нужную информацию. Я получаю только
массив ( [FILE] => Массив ( [FileName] => sasfasdfasd-asdf-asdasdf-afdsd-767563900.jpg [FileDateTime] => 1541527956 [FileSize] => 302871 [FileType] => 2 [MimeType] => image / jpeg [SectionsFound] => КОММЕНТАРИЙ ) [ВЫЧИСЛЕНО] => Массив ( [html] => width = "1000" height = "750" [Height] => 750 [Ширина] => 1000 [IsColor] => 1 ) [COMMENT] => Массив ( [0] => СОЗДАТЕЛЬ: gd-jpeg v1.0 (с использованием IJG JPEG v90), качество = 100 ) )
Я использую PHP 7.2
Может кто-нибудь сказать, пожалуйста, как я могу получить подробности ориентации изображения с помощью PHP?
Я проверил свои библиотеки GD, а также EXIF, используя информацию PHP. Они работают нормально.
К сожалению, созданный вами образ создан с использованием LibGD, который по умолчанию не записывает какие-либо расширенные данные EXIF.
Как сопровождающий расширения EXIF, поставляемого с PHP, я могу немного рассказать вам о том, как это работает под капотом:
Когда вы загружаете изображение с помощью exif_read_data()
затем по умолчанию возвращаются вышеперечисленные разделы (за исключением COMMENT
в твоем случае; как это генерируется LibGD). Если MAKERNOTE
раздел находится в двоичных метаданных изображения, затем PHP попытается преобразовать значение в один из известных форматов PHP [1].
Если подпись затем сопоставляется с одним из известных форматов, тогда PHP будет считывать все соответствующие данные IFD (данные файла изображения) из заголовка и пытаться разрешить некоторые имена тегов в соответствии с запечатанным списком тегов. Это делает возвращаемый массив более надежным для работы, вместо того, чтобы писать код вроде echo $exif['0x0112'];
(Ориентация), массив становится что-то вроде: echo $exif['Orientation'];
,
Однако если сигнатура не совпадает, тогда PHP все равно будет пытаться прочитать соответствующие данные EXIF в изображении, однако теги не будут отображаться для нестандартных тегов. PHP также продолжит читать такие вещи, как миниатюры и т. Д., Учитывая, что двоичные данные соответствуют спецификации EXIF.
В заключение; Расширение PHP EXIF доступно только для чтения, поэтому, даже если вам нужно узнать свою ориентацию по рассматриваемому изображению, вы не можете написать его вручную с расширением по умолчанию, которое поставляется с PHP, я боюсь.
[1] http://git.php.net/?p=php-src.git;a=blob;f=ext/exif/exif.c;h=d37a61f83da7bd8c14eeaa0d14762e3a4e7c80e6;hb=HEAD#l1336Других решений пока нет …