exif_read_data

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

exif_read_dataLee las cabeceras EXIF desde un JPEG o un TIFF

Descripción

exif_read_data ( string $filename [, string $sections = NULL [, bool $arrays = false [, bool $thumbnail = false ]]] ) : array

exif_read_data() lee las cabeceras EXIF desde un archivo de imagen JPEG o TIFF. De esta forma se puede leer los meta-datos generados por cámaras digitales.

Las cabeceras EXIF tienden a estar presentes en imágenes JPEG/TIFF generadas por cámaras digitales, pero desafortunadamente cada fabricante de cámaras digitales tiene una idea diferente de cómo etiquetar sus imágenes, por lo que no siempre se puede contar con que una cabecera Exif específica esté presente.

Height y Width son computados de la misma forma que lo hace getimagesize() por lo que sus valores no deben ser parte de ninguna cabecera devuelta. También, html es una cadena de texto de alto/ancho para usar dentro de un HTML normal.

Cuando una cabecera Exif contiene una nota de Copyright, puede contener ella misma dos valores. Como la solución es inconsistente en el estándar Exif 2.10, la sección COMPUTED devolverá las dos entradas Copyright.Photographer y Copyright.Editor mientras que las secciones IFD0 contienen la matriz de bytes con el carácter NULL que divide ambas entradas. O sólo la primera entrada si el tipo de información era erróneo (el comportamiento normal de Exif). COMPUTED también contendrá la entrada Copyright que es la cadena del copyright original, o una lista separada por comas del copyright de la fotografía y del editor.

La etiqueta UserComment tiene el mismo problema que la etiqueta Copyright. Puede almacenar dos valores. El primero es el que usa la codificación, y el segundo es el valor mismo. Por lo que si la sección IFD sólo contiene la codificación o una matriz de bytes, la sección COMPUTED almacenará la dos entradas UserCommentEncoding y UserComment. La entrada UserComment está disponible en ambos casos por lo que se debería usar con preferencia al valor de la sección IFD0.

exif_read_data() también valida las etiquetas de información EXIF según la especifiación EXIF (» http://exif.org/Exif2-2.PDF, página 20).

Nota:

Windows Me/XP pueden borrar las cabeceras Exif cuando se conecta una cámara.

Parámetros

filename

El nombre de la imagen que se va a leer. No puede ser una URL.

sections

Es una lista separada por comas de las secciones que necesitan estar presentes en el archivo para producir un array resultante. Si no se puede encontrar ninguna sección el valor devuelto es FALSE.

FILE FileName, FileSize, FileDateTime, SectionsFound
COMPUTED html, Width, Height, IsColor, y más si están disponibles. Height y Width son computados de la misma forma que lo hace getimagesize() por lo que sus valores no deben ser parte de ninguna cabecera devuelta. También, html es una cadena de texto de alto/ancho para usar dentro de un HTML normal.
ANY_TAG Cualquier información que tenga una Etiqueta, p.ej., IFD0, EXIF, ...
IFD0 Toda la información etiquetada de IFD0. En archivos de imagen normales, ésto contiene el tamaño de la imagen y así sucesivamente.
THUMBNAIL Se supone que un archivo contiene una miniatura si tiene un segundo IFD. Toda la información etiquetada acerca de la miniatura embebida es almacenada en esta sección.
COMMENT Cabeceras de comentarios de imágenes JPEG.
EXIF La sección EXIF es una subsección de IFD0. Contiene información más detallada sobre la imagen. La mayoría de estas entradas están relacionadas con la cámara digital.

arrays

Especifica si cada sección se convierte o no en una matriz. sections COMPUTED, THUMBNAIL, y COMMENT siempre se convierten en matrices ya que pueden contener valores cuyos nombres entran en conflicto con otras secciones.

thumbnail

Cuando se establece a TRUE se lee la miniatura misma. Si no, sólo se lee la información etiquetada.

Valores devueltos

Devuelve un array asociativo donde los índices de la matriz son los nombres de las cabeceras y los valores de la matriz son los valores asociados con esas cabeceras. Si no se puede devolver información, exif_read_data() devolverá FALSE.

Historial de cambios

Versión Descripción
4.3.0 Se puede leer toda la información IFD embebida incluidas matrices (devueltas como tales). También, el tamaño de una miniatura embebida es devuelto en una submatriz THUMBNAIL, y puede devolver miniaturas en formato TIFF. Además, ya no hay una longitud máxima para los valores devueltos (no mientras el límite de memoria haya sido alcanzado)
4.3.0 Si PHP tiene soporte para mbstring, el comentario de usuario puede cambiar automáticamente de codificación. También, si el comentario de usuario utiliza la codificación Unicode o JIS, esta codificación será cambiada automáticamente según la configuración inicial de exif en php.ini
4.3.0 Si la imagen contiene cualquier información IFD0, entonces COMPUTED contiene la entrada ByteOrderMotorola la cuál es 0 para el orden de byte little-endian (intel) y 1 para el orden de byte big-endian (motorola). También, COMPUTED y UserComment ya no contienen la primera entrada de copyright si el tipo de información era erróneo.

Ejemplos

Ejemplo #1 Ejemplo de exif_read_data()

<?php
echo "prueba1.jpg:<br />\n";
$exif exif_read_data('pruebas/prueba1.jpg''IFD0');
echo 
$exif===false "No se encontró información de cabecera.<br />\n" "La imagen contiene cabeceras<br />\n";

$exif exif_read_data('pruebas/prueba2.jpg'0true);
echo 
"prueba2.jpg:<br />\n";
foreach (
$exif as $clave => $sección) {
    foreach (
$sección as $nombre => $valor) {
        echo 
"$clave.$nombre$valor<br />\n";
    }
}
?>

La primera llamada falla ya que la imagen no tiene información de cabecera.

El resultado del ejemplo sería algo similar a:

test1.jpg:
No header data found.
test2.jpg:
FILE.FileName: test2.jpg
FILE.FileDateTime: 1017666176
FILE.FileSize: 1240
FILE.FileType: 2
FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, COMMENT
COMPUTED.html: width="1" height="1"
COMPUTED.Height: 1
COMPUTED.Width: 1
COMPUTED.IsColor: 1
COMPUTED.ByteOrderMotorola: 1
COMPUTED.UserComment: Exif test image.
COMPUTED.UserCommentEncoding: ASCII
COMPUTED.Copyright: Photo (c) M.Boerger, Edited by M.Boerger.
COMPUTED.Copyright.Photographer: Photo (c) M.Boerger
COMPUTED.Copyright.Editor: Edited by M.Boerger.
IFD0.Copyright: Photo (c) M.Boerger
IFD0.UserComment: ASCII
THUMBNAIL.JPEGInterchangeFormat: 134
THUMBNAIL.JPEGInterchangeFormatLength: 523
COMMENT.0: Comment #1.
COMMENT.1: Comment #2.
COMMENT.2: Comment #3end
THUMBNAIL.JPEGInterchangeFormat: 134
THUMBNAIL.Thumbnail.Height: 1
THUMBNAIL.Thumbnail.Height: 1

Ver también