getimagesize

(PHP 3, PHP 4, PHP 5)

getimagesize -- Obtener el tamaño de una imagen

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().

Hosting by: hurra.com
Generated: 2007-01-26 18:00:59