即使jpeg中存在元数据,exif_read_data()也会返回false

时间:2016-12-14 19:52:36

标签: php exif

出于某种原因,exif_read_data()对目录中的每个图像都返回false,即使我知道我的所有jpeg图像都有元数据属性。

我绝不是一个PHP向导,所以也许我有一个语法错误,或者我只是错过了一些对你们这些PHP向导很明显的东西。

galleryData.metadata = <?php
    $dir_path = "Assets/Images/portfolio/";
    if (is_dir($dir_path)) {
        $files = scandir($dir_path);
        for ($i = 0; $i < count($files); $i++) {
            $tempPath = $dir_path + $files[$i];
            $metadata[$i] = exif_read_data($tempPath);
        }
        echo json_encode($metadata);
    }
?>;

2 个答案:

答案 0 :(得分:1)

值得庆幸的是,我没有正确地组合我的字符串。以下是我的固定和工作代码。

galleryData.metadata = <?php
    $metadata = array();
    if (is_dir($dir_path)) {
        for ($i = 0; $i < count($files); $i++) {
            $metadata[$i] = exif_read_data("{$dir_path}{$files[$i]}", null, true);
        }
        echo json_encode($metadata);
    }
?>;

答案 1 :(得分:1)

可能是一个解决方案,但需要更多信息真实错误(错误消息?)

exif_read_data()可以将错误的舞会php版本转换为版本: Bug #75785 Many errors from exif_read_data

解决方案可能是使用

$img = new \Imagick(DSC01386.jpg);
$allProp = $img->getImageProperties();
$exifProp = $img->getImageProperties("exif:*");

The Imagick class,是非常强大的类(轮换等)。

该解决方案的完整故事here