Descripción
array
getimagesize ( string nombre_archivo [, array info_imagen])
La función getimagesize()
determinará el tamaño de cualquier archivo de
imagen GIF, JPG,
PNG, SWF,
SWC, PSD,
TIFF, BMP,
IFF, JP2,
JPX, JB2,
JPC, XBM, o
WBMP y devuelve las dimensiones, junto con el
tipo de archivo y una cadena de texto de altura/ancho a ser usada
al interior de una
etiqueta HTML IMG normal.
Si no es posible acceder a la imagen
nombre_archivo, o si no es una imagen
válida, getimagesize() devolverá
FALSE y generará un error de nivel
E_WARNING.
Nota:
El soporte para JPC, JP2,
JPX, JB2,
XBM, y WBMP apareció
en PHP 4.3.2. El soporte para SWC existe a
partir de PHP 4.3.0 y el soporte TIFF fue
agregado en PHP 4.2.0
Nota:
El soporte de JPEG 2000 fue agregado en PHP 4.3.2. Note que JPC y
JP2 son capaces de tener componentes con diferentes profundidades
de bit. En este caso, el valor para "bits" es la profundidad de
bit más alta encontrada. Asimismo, los archivos JP2 pueden
contener múltiples secuencias de código JPEG
2000. En este caso, getimagesize() devuelve
los valores para la primera secuencia de código que
encuentra en la raíz del archivo.
Nota:
La función getimagesize() no requiere
de la biblioteca de imágenes GD.
Devuelve una matriz con 4 elementos. El índice 0 contiene
el ancho de la imagen en píxeles. El índice 1
contiene la altura. El índice 2 es una bandera que indica
el tipo de imagen: 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6
= BMP, 7 = TIFF(orden de bytes intel), 8 = TIFF(orden de bytes
motorola), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 =
IFF, 15 = WBMP, 16 = XBM. Estos valores corresponden a las
constantes IMAGETYPE que fueron agregadas en PHP 4.3.0. El
índice 3 es una cadena de texto con el valor correcto
height="yyy" width="xxx" que puede ser usado directamente en una
etiqueta IMG.
Ejemplo 1. getimagesize (archivo)
<?php list($ancho, $altura, $tipo, $atr) = getimagesize("img/bandera.jpg"); echo "<img src=\"img/bandera.jpg\" $attr alt=\"ejemplo de getimagesize()\" />"; ?>
|
|
El soporte para URLs fue agregado en PHP 4.0.5
Ejemplo 2. getimagesize (URL)
<?php $tam = getimagesize("http://www.example.com/gifs/logo.gif");
// si el nombre de archivo contiene un espacio, codificarlo apropiadamente $tam = getimagesize("http://www.example.com/gifs/lo%20go.gif");
?>
|
|
Con las imágenes JPG se devuelven dos
índices adicionales: channels y
bits. channels será 3
para fotos RGB y 4 para fotos CMYK. bits es el
número de bits por cada color.
A partir de PHP 4.3.0, bits y
channels se encuentran presentes para otros
tipos de imágenes también. Sin embargo, la presencia
de éstos valores puede ser un poco confusa. Como un
ejemplo, GIF siempre usa 3 canales por
píxel, pero el número de bits por píxel no
puede ser calculado para un
GIF animado con una tabla de colores global.
Puede que algunos formatos no contengan una imagen o que contengan
múltiples imágenes. En estos casos, puede que
getimagesize() no sea capaz de determinar el
tamaño de la imagen
apropiadamente. getimagesize() devolverá
cero como valor de ancho y altura en tales casos.
A partir de PHP 4.3.0, getimagesize() devuelve
también un parámetro adicional,
mime, que corresponde con el tipo MIME de la
imagen. Esta información puede ser usada para despachar
imágenes con las cabeceras HTTP Content-type correctas:
Ejemplo 3. getimagesize() y los tipos MIME
<?php $tam = getimagesize($nombre_archivo); $da=fopen($nombre_archivo, "rb"); if ($tam && $da) { header("Content-type: {$tam['mime']}"); fpassthru($da); exit; } else { // error } ?>
|
|
El parámetro opcional info_imagen le
permite extraer algunos datos extendidos desde el archivo de
imagen. En la actualidad, esto devolverá los diferentes
marcadores APP de JPG como una matriz
asociativa. Algunos programas usan estos marcadores para embeber
información de texto en imágenes. Un uso muy
común es el embeber información
IPTC http://www.iptc.org/
en el marcador APP13. Puede usar la función
iptcparse() para convertir el marcador APP13
binario hacia algo legible.
Ejemplo 4. getimagesize() devolviendo IPTC
<?php $tam = getimagesize("imagen_prueba.jpg", $info); if (isset($info["APP13"])) { $iptc = iptcparse($info["APP13"]); var_dump($iptc); } ?>
|
|
Vea también image_type_to_mime_type(),
exif_imagetype(),
exif_read_data() y
exif_thumbnail().