Estoy escribiendo un pequeño script que reúne un par de valores exif a partir de imágenes ... es decir, la fecha de creación, marca y modelo.PHP/(malo) exif datos/advertencias, ¿qué hacer?
Me doy cuenta (especialmente con la imagen enviada a través de la aplicación de correo predeterminada de iPhone) que los datos exif han sido alterados, que es un problema conocido (la aplicación de correo comprime las imágenes antes de enviarlas, incluso cuando 'tamaño completo' seleccionado). Los valores que estoy buscando parecen estar allí, aunque recibo advertencias de PHP accediéndolos. No hay problemas para obtener los valores, pero obviamente la advertencia no funciona para mí.
Llamar a ini_set ('display_errors', 0) oculta las advertencias, pero me parece descuidado. ¿Hay alguna manera de que pueda ignorar esta advertencia, en este guión, para este escenario que es un poco mejor?
Mi idea inicial fue envolver todo en un try/catch, pero la advertencia todavía se muestra de manera destacada en la página.
Simplemente estoy usando la función estándar exif_read_data(), creo que una biblioteca externa sería demasiado para lo poco que necesito.
PHP:
if($_GET['i']) { $input = strtolower($_GET['i'] . ".jpg"); if(file_exists($input)) { $exif = exif_read_data($input); foreach($exif as $key => $value) { if(!in_array($key, Array("DateTime","Make","Model"))) { unset($exif[$key]); } } ksort($exif); print_r($exif); } }
Advertencia:
Warning: exif_read_data(trailmarker.jpg) [exif_read_data]: Illegal IFD size: x00C4 + 2 + x3239*12 = x25B70 > x2B74 in C:\xampp\htdocs\exif\dumpfolder\exif.php on line 5
¿Puede mostrar el código exacto que está utilizando y las advertencias exactas que está recibiendo? –
' Php $ input =" someimage.jpg "; $ result = exif_read_data ($ input); foreach ($ result as $ key => $ value) { if (! In_array ($ key, Array ("DateTime", "Make", "Model"))) { unset ($ result [$ key]); } } ?> – Jeff
ah, bueno, no sé cómo usar StackOverflow obviamente ... :( – Jeff