我正在尝试使用PHP exif_read_data()函数获取图像方向的详细信息,但不幸的是,我无法获得所需的详细信息。我只得到
Array ( [FILE] => Array ( [FileName] => sasfasdfasd-asdf-asdasdf-afdsd-767563900.jpg [FileDateTime] => 1541527956 [FileSize] => 302871 [FileType] => 2 [MimeType] => image/jpeg [SectionsFound] => COMMENT ) [COMPUTED] => Array ( [html] => width="1000" height="750" [Height] => 750 [Width] => 1000 [IsColor] => 1 ) [COMMENT] => Array ( [0] => CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), quality = 100 ) )
我正在使用PHP 7.2 有人可以告诉我如何使用PHP获取图像方向详细信息吗? 我已经检查了我的GD库以及使用PHP信息的EXIF。他们工作正常。
答案 0 :(得分:0)
不幸的是,您创建的映像是使用LibGD完成的,默认情况下,它不会写入任何扩展的EXIF数据。
作为PHP随附的EXIF扩展程序的维护者,我可以向您深入了解它的工作原理:
当您使用exif_read_data()
加载图像时,默认情况下会返回上述部分(您所用的COMMENT
除外;它是由LibGD生成的)。如果在图像的二进制元数据中找到MAKERNOTE
部分,则PHP将尝试将值解析为PHP [1]的一种已知格式。
如果签名随后与一种已知格式匹配,则PHP将从标头读取所有相关的IFD(图像文件数据)数据,并尝试根据烘焙的标签列表解析某些标签名称。这使得返回的数组更加依赖于工作,而不必像编写echo $exif['0x0112'];
(方向)这样的代码,而是使数组变成类似echo $exif['Orientation'];
的东西。
但是,如果签名不匹配,则PHP仍将尝试读取图像中的相关EXIF数据,但是对于非标准标签,不会映射标签。考虑到二进制数据遵循EXIF规范,PHP还将继续读取缩略图数据等内容。
最后; PHP的EXIF扩展名是只读的,因此即使您从有问题的图像知道方向,您也无法使用PHP附带的默认扩展名手动编写它。