exif_read_data
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
exif_read_data — Lee las cabeceras EXIF desde un JPEG o un TIFF
Descripción
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
.
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
.
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', 0, true);
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