0

我正在尝试使用 PHP exif_read_data() 函数获取图像方向的详细信息,但不幸的是我无法获得所需的详细信息。我只得到

大批
(
    [文件] => 数组
        (
            [文件名] => sasfasdfasd-asdf-asdasdf-afdsd-767563900.jpg
            [文件日期时间] => 1541527956
            [文件大小] => 302871
            [文件类型] => 2
            [MimeType] => 图像/jpeg
            [找到的部分] => 评论
        )

    [计算] => 数组
        (
            [html] => 宽度=“1000”高度=“750”
            [身高] => 750
            [宽度] => 1000
            [IsColor] => 1
        )

    [评论] => 数组
        (
            [0] => 创建者:gd-jpeg v1.0(使用 IJG JPEG v90),质量 = 100

        )

)

我正在使用 PHP 7.2 有人可以告诉我如何使用 PHP 获取图像方向的详细信息吗?我已经使用 PHP 信息检查了我的 GD 库和 EXIF。他们工作正常。

4

1 回答 1

1

不幸的是,您创建的图像是使用 LibGD 完成的,默认情况下它不会写入任何扩展的 EXIF 数据。

作为 PHP 附带的 EXIF 扩展的维护者,我可以向您介绍一下它是如何工作的:

当您使用 加载图像exif_read_data()时,默认情况下会返回上述部分(COMMENT您的情况除外;因为它是由 LibGD 生成的)。如果MAKERNOTE在图像的二进制元数据中找到某个部分,则 PHP 将尝试将该值解析为 PHP[1] 的已知格式之一。

如果签名随后与其中一种已知格式匹配,则 PHP 将从标头中读取所有相关的 IFD(图像文件数据)数据,并尝试根据烘焙的标签列表解析一些标签名称。这使得返回的数组更加依赖于使用,而不是必须编写像echo $exif['0x0112'];(Orientation) 这样的代码,数组变成了这样的东西:echo $exif['Orientation'];.

但是,如果签名不匹配,那么 PHP 仍会尝试读取图像中的相关 EXIF 数据,但不会为非标准标签映射标签。鉴于二进制数据遵循 EXIF 规范,PHP 还将继续读取缩略图数据等内容。

最后; PHP 的 EXIF 扩展是只读的,所以即使你从相关图像中知道你的方向,恐怕你也不能用 PHP 附带的默认扩展手动编写它。

[1] http://git.php.net/?p=php-src.git;a=blob;f=ext/exif/exif.c;h=d37a61f83da7bd8c14eeaa0d14762e3a4e7c80e6;hb=HEAD#l1336

于 2019-01-30T02:25:46.047 回答