getimagesize
(PHP 4, PHP 5, PHP 7, PHP 8)
getimagesize — Devuelve el tamaño de una imagen
Descripción
getimagesize() puede también devolver más información
en el argumento image_info
.
Precaución
Esta función espera que filename
sea un
fichero de imagen válido. Si se proporciona un fichero no imagen, puede ser
detectado incorrectamente como imagen y la función devolverá con éxito, pero el array puede contener valores absurdos.
No se debe utilizar getimagesize() para verificar que un
fichero dado es una imagen válida. En su lugar, debe utilizarse una solución diseñada para ello como la extensión FileInfo.
Nota:
Se debe tener en cuenta que JPC y JP2 pueden tener componentes con diferentes profundidades de bit. En este caso, el valor de "bits" es la mayor profundidad de bit encontrada. Asimismo, los ficheros JP2 disponen de soporte para multiple JPEG 2000 codestreams
.
En este caso, getimagesize() devuelve los valores
para el primer codestream encontrado en la raíz del fichero.
Nota:
La información sobre iconos se recupera desde el icono con mayor resolución.
Nota:
Las imágenes GIF consistentes en uno o varios fotogramas, donde cada fotograma puede ocupar
únicamente una parte de la imagen. El tamaño de la imagen que es reportado por
getimagesize() es el tamaño global (leído desde el descriptor lógico de la pantalla).
Parámetros
filename
-
Este argumento especifica el fichero del cual se desean obtener
las informaciones. Puede ser un fichero local o (dependiendo
de la configuración), un fichero remoto utilizando uno de los
flujos soportados.
image_info
-
Este argumento opcional permite extraer información adicional del fichero de imagen. Actualmente, esta opción
devuelve diferentes marcadores JPG APP en un array asociativo. Algunos programas utilizan
estos marcadores APP para especificar información en las etiquetas
HTML. Un marcador común es el marcador APP13, descrito
en » IPTC. Puede utilizarse
la función iptcparse() para analizar este marcador,
y obtener información legible.
Nota:
image_info
soporta únicamente
los ficheros JFIF.
Valores devueltos
Devuelve un array que contiene hasta 7 elementos. No todos los tipos
de imágenes incluyen los elementos channels
y
bits
.
El índice 0 contiene el ancho. El índice 1 contiene la altura.
Nota:
Algunos formatos pueden no contener ninguna imagen, o bien varias.
En estos casos, getimagesize() puede no ser capaz
de determinar correctamente el tamaño de la imagen.
getimagesize() devuelve entonces cero como tamaño de
altura y ancho.
Nota:
getimagesize() es independiente de las metadatos de la imagen.
Por ejemplo, si la bandera Exif Orientation
está definida en un valor que gira la imagen 90 o 270 grados, los índices 0 y 1 son intercambiados,
es decir, contienen respectivamente la altura y el ancho.
El índice 2 es una constante entre IMAGETYPE_*
,
indicando el tipo de la imagen.
El índice 3 contiene la cadena para colocar en las etiquetas
IMG: height="xxx" width="yyy"
.
mime
corresponde al tipo MIME de una imagen.
Esta información puede ser utilizada para enviar el encabezado
HTTP Content-type
correcto:
Ejemplo #1 getimagesize() y tipos MIME
<?php
$size = getimagesize($filename);
$fp = fopen($filename, "rb");
if ($size && $fp) {
header("Content-type: {$size['mime']}");
fpassthru($fp);
exit;
} else {
// error
}
?>
channels
será 3 para imágenes RGB y 4 para
imágenes CMYK.
bits
es el número de bytes para cada color.
Sin embargo, la presencia de los valores de channels
y
de bits
puede llevar a la confusión. Por
ejemplo, una imagen GIF utiliza siempre tres canales por
píxel, pero el número de bits por píxel no puede ser calculado en el caso
de una imagen animada GIF con una tabla de colores global.
Si ocurre un error, false
es devuelto.
Errores/Excepciones
Si el acceso a filename
es imposible,
getimagesize() generará un error de nivel
E_WARNING
. Si ocurre un error durante la lectura,
getimagesize() generará un error de nivel
E_NOTICE
.
Ejemplos
Ejemplo #2 Ejemplo con getimagesize()
<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"Ejemplo con getimagesize()\" />";
?>
Ejemplo #3 getimagesize() con una URL
<?php
$size = getimagesize("http://www.example.com/gifs/logo.gif");
// Si el nombre del fichero contiene espacios, codifíquelo!
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");
?>
Ejemplo #4 getimagesize() que devuelve IPTC
<?php
$size = getimagesize("testimg.jpg", $info);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc);
}
?>
Notas
Nota:
Esta función no requiere la biblioteca GD.