Por alguna razón, exif_read_data () devuelve falso en cada imagen en el directorio aunque sé que todas mis imágenes jpeg tienen propiedades de metadatos.

De ninguna manera soy un asistente de PHP todavía, así que tal vez tenga un error de sintaxis o simplemente me esté perdiendo algo bastante obvio para aquellos de ustedes que son asistentes de 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);
    }
?>;
1
Sean LeBlanc 14 dic. 2016 a las 22:52

2 respuestas

La mejor respuesta

Afortunadamente me di cuenta de que no estaba combinando mis cuerdas correctamente. A continuación se muestra mi código fijo y de trabajo.

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
Sean LeBlanc 14 dic. 2016 a las 21:26

Podría ser una solución, pero necesita tener más información error real (¿mensaje de error?)

Exif_read_data () puede tener errores prom php versión a versión: Error nº 75785 Muchos errores de exif_read_data

La solución podría ser usar

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

La clase Imagick, es una clase bastante poderosa (rotaciones, etc.).

La historia completa de esa solución aquí

1
sanka 16 jun. 2018 a las 19:18