Descrição
getimagesize(string $filename
, array $&imageinfo
= ?): array
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().