getimagesize
(PHP 4, PHP 5, PHP 7, PHP 8)
getimagesize — Obtener el tamaño de una imagen
Descripción
getimagesize() también puede devolver alguna información más
con el parámetro imageinfo
.
Nota:
Observe que JPC y JP2 pueden tener componentes con diferente profundidad
de bit. En tal caso, el valor para "bits" es la mayor profundidad de bit encontrada. También,
los ficheros JP2 pueden contener múltiples flujos de código JPEG 2000
.
En este caso, getimagesize() devuelve los valores del primer
flujo de código que encuentre en la raíz del fichero.
Nota:
La información sobre iconos se recupera desde el icono con la mayor
tasa de bit.
Parámetros
filename
-
Este parámetro especifica el fichero del cual recuperar información.
Puede hacer referencia a un fichero local o (si la configuración lo permite) a un
fichero remoto usando uno de los flujos soportados.
imageinfo
-
Este parámetro opcional permite extraer alguna información ampliada
del fichero de imagen. Actualmente, devolverá los diferentes
marcadores APP de JPG como un array asociativo.
Algunos programas usan estos marcadores APP para incluir información de texto en
imágenes. Un uso muy común es incluir información
» IPTC en el marcador APP13.
Se puede usar la función iptcparse() para convertir el
marcador binario APP13 en algo que sea legible.
Valores devueltos
Devuelve un array de hasta 7 elementos. No todos los tipos de imagen incluirán
los elementos channels
y bits
.
Los índices 0 y 1 contienen el ancho y el alto de la imagen, respectivamente.
Nota:
Algunos formatos podrían no contener imágenes o contener múltiples imágenes. En estos
casos, getimagesize() no será capaz de determinar
apropiadamente el tamaño de la imagen. getimagesize() devolverá
cero para el ancho y el alto en estos casos.
El índice 2 es una de las constantes IMAGETYPE_XXX que indican
el tipo de imagen.
El índice 3 es una cadena de texto con el string correcot
height="yyy" width="xxx"
que puede ser usada
dierectamente en una etiqueta IMG.
mime
es el tipo MIME correspondiente de la imagen.
Esta información se puede usar para emitir imágenes con la cabecera HTTP
Content-type
correcta:
Ejemplo #1 getimagesize() y tipos MIME
<?php
$tamaño = getimagesize($nombre_fichero);
$fp = fopen($nombre_fichero, "rb");
if ($tamaño && $fp) {
header("Content-type: {$tamaño['mime']}");
fpassthru($fp);
exit;
} else {
// error
}
?>
Los channels
serán 3 para ímagenes RGB y 4 para ímagenes
CMYK.
bits
es el número de bits de cada color.
Para algunos tipos de imagen, la presencia de los valores channels
y
bits
pueden ser un poco confusos. Como
ejemplo, GIF siempre usa 3 canales
por píxel, pero el número de bits por pixel no puede ser calculado para un
GIF animado con una tabla de colores global.
En caso de error devuelve false
.
Errores/Excepciones
Si el acceso a la imagen filename
es imposible,
getimagesize() generará un error de nivel
E_WARNING
. Si se produce un error de lectura,
getimagesize() generará un error de nivel
E_NOTICE
.
Ejemplos
Ejemplo #2 Ejemplo degetimagesize()
<?php
list($ancho, $alto, $tipo, $atributos) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $atributos alt=\"Ejemplo de getimagesize()\" />";
?>
Ejemplo #3 getimagesize (URL)
<?php
$tamaño = getimagesize("http://www.example.com/gifs/logo.gif");
// si el nombre de fichero contiene espacios, codifíquelo apropiadamente
$tamaño = getimagesize("http://www.example.com/gifs/lo%20go.gif");
?>
Ejemplo #4 getimagesize() devolviendo IPTC
<?php
$tamaño = getimagesize("prueba.jpg", $info);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc);
}
?>
Notas
Nota:
Esta función no requiere la librería GD image.
Nota:
Esta función requiere que filename
sea un fichero
de imagen válido. Si se proporciona un fichero que no sea imagen, este podría ser
detectado incorrectamente como una imagen y la función devolver como éxito.
No de debe usar getimagesize() para comprobar que una fichero
dado es una imagen válida. Use una solución a propósito tal como la
extensión Fileinfo en su lugar.