【问题标题】:exif_read_data - Incorrect APP1 Exif Identifier Codeexif_read_data - 不正确的 APP1 Exif 标识符代码
【发布时间】:2018-06-17 02:59:50
【问题描述】:

当我想读取 EXIF 数据时,我的一些照片有问题。

我的代码如下:

$exif_date = exif_read_data($file_path,  'IFD0');

对于一些图像,我得到警告: 消息:exif_read_data(001.jpg) [function.exif-read-data]: Incorrect APP1 Exif Identifier Code

我的问题是:我怎样才能避免这个警告,我可以在 exif_read 之前检查 app1 是否正确吗? 感谢您的帮助。

【问题讨论】:

  • 我仍然不知道为什么我有这个警告,所以我发现摆脱它的唯一方法就是在 exif_read_data 之前加上“@”

标签: php image exif


【解决方案1】:

如需快速回答,请查看这篇文章的最后几行。

我认为仍然缺少一些代码。我遇到了完全相同的问题,经过搜索,我发现了多个与此问题相关的网站:

http://drupal.org/node/556970 包含 2 个解决方案的错误报告:

  1. 只需在exif_read_data前面放一个@
  2. 检查$imageinfo['APP1']是否包含Exif

在这里阅读dcro的回答后,发现getimagesize()的第二个参数返回了这样一个$imageinfo数组。现在我用以下代码测试了我的一张图片:

<?php
getimagesize("test.jpg", $info);
var_dump($info);
?>

这返回了以下内容:

array(1) {
  ["APP1"]=>
  string(434) "http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Exempi + XMP Core 4.1.1">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:dc="http://purl.org/dc/elements/1.1/">
   <dc:type>Image</dc:type>
   <dc:format>image/jpeg</dc:format>
  </rdf:Description>
 </rdf:RDF>
</x:xmpmeta>

<?xpacket end="w"?>"
}

顺便说一句。看起来不像Exif。这看起来更像XMP,但有趣的是,例如 exiftool 找到了一些 exif 数据(例如方向)。在XMP specification 中,我发现可以在一个文件中并排放置 XMP 和 Exif 数据(第 18 页)。进一步搜索发现extract Exif from XMP有这样的脚本。

无论如何,因为

  1. getimagesize() 没有为我提供有关我图片中的 Exif 的可用信息,并且
  2. 所述脚本显示,在我的图像中,Exif 数据未嵌入到 XMP 数据中,并且
  3. 它只是用来抑制 exif-read-data() 警告

我仍然会使用@exif-read-data($file_path) 解决方案。

【讨论】:

【解决方案2】:

您可以使用 PHP 的 getimagesize() 函数从文件中提取 APP 标记,然后验证 APP1 标记是否实际包含 EXIF 数据(该标记的内容应以“Exif”开头)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多