PHP的EXIF数据无法工作

4
我是PHP的新手,正在调整一个脚本,该脚本从http://www.techrepublic.com/article/create-a-dynamic-photo-gallery-with-php-in-three-steps/生成一个目录中图片的表格以及一些附带的EXIF数据。唯一的问题是代码没有显示EXIF数据。即使是原始源代码也是如此。我最好的猜测是原始源代码中的某些内容已经过时,不再受现代PHP支持。我确保我的服务器启用了EXIF功能。
以下是代码:
<table>
<?php
// define directory path
$dir = "path/to/directory";

// iterate through files
// look for JPEGs
if (is_dir($dir)) {
  if ($dh = opendir($dir)) {
    while (($file = readdir($dh)) !== false) {
      if (preg_match("/.jpg/", $file)) {

        // read EXIF headers
        $exif = exif_read_data($file, 0, true);

        // get image
        echo "<tr><td rowspan='3'><img src='$dir/$file'></td>";

        // get file name
        echo "<th>Title</th><td>" . $exif['FILE']['FileName'] . "</td></tr>";

        // get timestamp
        echo "<tr><th>Year</th><td>"  . $exif['IFD0']['DateTime'] . "</td></tr>";

        // get image dimensions
        echo "<tr><th>Description</th><td>" . $exif['IFD0']['Comments'] . "</td></tr>";

      }
    }
    closedir($dh);
  }
}
?>
</table>

编辑:我还收到以下错误日志:

20160815T185355: benxd.me/art/gallery.php 
PHP Warning:  exif_read_data(): Unable to open file in /hermes/walnaweb01a/b893/pow.hdemoras/htdocs/benxd/art/gallery.php on line 21 
PHP Warning:  exif_read_data(): Unable to open file in /hermes/walnaweb01a/b893/pow.hdemoras/htdocs/benxd/art/gallery.php on line 21 
PHP Warning:  exif_read_data(): Unable to open file in /hermes/walnaweb01a/b893/pow.hdemoras/htdocs/benxd/art/gallery.php on line 21 
PHP Warning:  exif_read_data(): Unable to open file in /hermes/walnaweb01a/b893/pow.hdemoras/htdocs/benxd/art/gal 

我的代码中第21行是$exif = exif_read_data($file, 0, true);


1
你是否检查了 $exif 并阅读了 exif_read_data() 的文档? - Mike B
这些图片有exif数据吗? - Reeno
是的,我已经阅读了php.net上的文档,但除了我看到的示例之外,它对我来说并没有太多意义。 - Ben393
你有检查过错误日志吗? - RiggsFolly
所有的 .jpg 文件都被输出到表格中。 - Ben393
显示剩余5条评论
2个回答

5
尝试明确添加完整路径和节列表: ```尝试明确添加完整路径和节列表:```
$exif = exif_read_data($dir . $file, "FILE,COMPUTED,ANY_TAG,IFD0,THUMBNAIL,COMMENT,EXIF", true);

来源: http://php.net/manual/zh/function.exif-read-data.php

该函数exif_read_data()从 JPEG 或 TIFF 文件中读取 EXIF 头信息。 它也尝试解析 XMP 并在失败时返回数据段。

1
谢谢!$exif = exif_read_data("$dir/$file", "FILE,COMPUTED,ANY_TAG,IFD0,THUMBNAIL,COMMENT,EXIF", true); 对我很有效! - Ben393

0

我花了数周时间解决这个问题,最后决定在 PHP 中创建一个库来提取 PNG 图像的元数据(Exif、XMP、GPS...),100% 本地化,希望它能有所帮助。 :) PNGMetadata

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接