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

exif_read_data() returning false even though there is metadata present in jpeg

出于某种原因 exif_read_data() returns 目录中的每个图像都为 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);
    }
?>;

谢天谢地,我发现我没有正确组合字符串。下面是我固定的工作代码。

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);
    }
?>;

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

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,相当强大class(旋转等)。

该解决方案的完整故事here