Php exif_读取_数据-APP1 exif标识符代码不正确

Php exif_读取_数据-APP1 exif标识符代码不正确,php,image,exif,Php,Image,Exif,当我想读取EXIF数据时,我的一些照片有问题 我的代码如下: $exif_date = exif_read_data($file_path, 'IFD0'); 通过一些图片,我了解到: 消息:exif读取数据(001.jpg)[function.exif读取数据]:APP1 exif标识符代码不正确 我的问题是:我如何避免这种情况,我能在退出阅读前检查app1是否正确吗? 感谢您的帮助。您可以使用PHP的getimagesize()函数从文件中提取应用程序标记,然后验证APP1标记是否确实包

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

我的代码如下:

$exif_date = exif_read_data($file_path,  'IFD0');
通过一些图片,我了解到: 消息:exif读取数据(001.jpg)[function.exif读取数据]:APP1 exif标识符代码不正确

我的问题是:我如何避免这种情况,我能在退出阅读前检查app1是否正确吗?
感谢您的帮助。

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

要快速回答,请查看本文的最后几行

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

包含两种解决方案的错误报告:

  • 只需将一个
    @
    放在
    exif\u read\u data
  • 如果包含Exif,请选中
    $imageinfo['APP1']
  • 在阅读了dcro的回答之后,我发现的第二个参数返回这样一个
    $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"?>"
    }
    
    数组(1){
    [“APP1”]=>
    字符串(434)”http://ns.adobe.com/xap/1.0/
    形象
    图像/jpeg
    "
    }
    
    顺便说一句,这个看起来不像进出口银行。这看起来更像,但有趣的是,例如exiftool会找到一些exif数据(例如方向)。在中,我发现在一个文件中可以同时包含XMP和Exif数据(第18页)。进一步搜索发现,有这样一个脚本

    不管怎样,自从

  • getimagesize()没有提供有关图片和图像中Exif的可用信息
  • 声明的脚本显示,在我的图像中,Exif数据没有嵌入到XMP数据中,并且
  • 它只是用来抑制exif-read-data()警告

  • 我仍然会使用
    @exif read data($file\u path)
    解决方案。

    我仍然不知道为什么会有这种警告,所以我发现唯一的解决方法是在exif\u read\u data之前加上“@”,如果您正在读取从数据库blob返回的图像数据(作为字符串),那么还有一种情况