(PHP 4, PHP 5, PHP 7)
getimagesize — Obtém o tamanho de uma imagem
$filename
[, array $&imageinfo
] )A função getimagesize() irá determinar o tamanho de qualquer arquivo de imagem GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, ou WBMP e retornar as dimensões juntamente com o tipo de arquivo e a altura/largura para usar dentro de uma tag HTML IMG.
Se for impossível acessar a imagem filename
,
ou se não for uma imagem válida, getimagesize()
irá retornar FALSE
e gerar um erro de nível
E_WARNING.
Nota:
Suporte para JPC, JP2, JPX, JB2, XBM, e WBMP tornou-se disponível no PHP 4.3.2. Supporte para SWC a partir do PHP 4.3.0 e o suporte a TIFF foi adicionado no PHP 4.2.0
Nota: Suporte a JPEG 2000 foi adicionado no PHP 4.3.2. Note que JPC e JP2 são capazes de ter componentes com profundidades diferentes de bit. Neste caso o valor para 'bits' é a maior profundidade de bits encontrada. Também, arquivos JP2 podem conter múltiplos JPEG 2000 codestreams. Neste caso, getimagesize() retorna o valor para o primeiro codestream que encontrar na raíz do arquivo.
Nota: A função getimagesize() não requer a biblioteca de imagem GD.
Retorna uma matriz com 4 elementos. O índice 0 contém a largura da imagem em pixels. O índice 1 contém a altura. O índice 2 é uma indicação do tipo de imagem: 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM. Estes valores correspondem as constantes IMAGETYPE que foram adicionadas no PHP 4.3. O índice 3 é uma string com o height="yyy" width="xxx" correto que pode ser usado diretamente numa tag IMG.
Exemplo #1 getimagesize (file)
<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
?>
Suporte para URL foi adicionado PHP 4.0.5
Exemplo #2 getimagesize (URL)
<?php
$size = getimagesize("http://www.example.com/gifs/logo.gif");
// se o nome do arquivo tiver um espaço, codifique-o corretamente
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");
?>
Com imagens JPG dois indices extras são retornados: channels e bits. channels será 3 para imagens RGB e 4 para imagens CMYK. bits é o número de bits para cada cor.
Começando no PHP 4.3.0, bits e channels estão presentes para outros tipos de imagens também. Entretanto, a presença desses valores pode ser um pouco confusa. Por exemplo, GIF sempre usa 3 channels por pixel, mas o número de bits por pixel não pode ser calculado para um GIF animado com uma tabela de cores global.
Alguns formatos podem não conter imagens ou conter múltiplas imagens. Nestes casos, getimagesize() não será capaz de determinar o tamanho da imagem. getimagesize() retornará zero para a altura e largura nestes casos.
Começando no PHP 4.3.0, getimagesize() também retorna um parâmetro adicional, mime, que corresponde ao tipo MIME da imagem. Esta informação pode ser usada para enviar imagens com o cabeçalho HTTP Content-type correto:
Exemplo #3 getimagesize() e tipos MIME
<?php
$size = getimagesize($filename);
$fp=fopen($filename, "rb");
if ($size && $fp) {
header("Content-type: {$size['mime']}");
fpassthru($fp);
exit;
} else {
// error
}
?>
O parâmetro opcional imageinfo
permite a você extrair
alguma informação extendida do arquivo de imagem.
Atualmente, irá retornar os diferentes
JPG APP markers como uma matriz associativa. Alguns programas
usam estes APP markers para embutir textos com informações na imagem.
Um uso muito comum é embutir informação IPTC
» http://www.iptc.org/ no
APP13 marker. Você poderá usar a função iptcparse()
para interpretar o binário APP13 marker em algo
legível.
Exemplo #4 getimagesize() retornando IPTC
<?php
$size = getimagesize("testimg.jpg", $info);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc);
}
?>
Veja também image_type_to_mime_type(), exif_imagetype(), exif_read_data() e exif_thumbnail().