exif_read_dataLê os cabeçalhos EXIF de um arquivo de imagen
&reftitle.description;
arrayfalseexif_read_dataresourcestringfilestringnullrequired_sections&null;boolas_arrays&false;boolread_thumbnail&false;
A função exif_read_data lê os cabeçalhos
EXIF de um arquivo de imagem. Desta forma é possível ler metadados
gerados por câmeras digitais.
Cabeçalhos EXIF tendem a estar presentes em imagens JPEG/TIFF geradas por camêras
digitais, mas infelizmente, cada fabricante de camêra digital tem
uma ideia diferente de como rotular suas imagens, então não se
pode confiar sempre que um cabeçalho EXIF específico estará presente.
Altura (Height) e largura (Width) sao computadas
da mesma maneira que getimagesize faz, então seus valores não devem
ser parte de nenhum cabeçalho retornado. Além disso, html é
uma string de texto com altura/largura a ser usado dentro de umHTML normal.
Quando um cabeçalho Exif contém uma nota de direitos autorais, esta nota pode conter dois
valores. Como a solução é inconsistente com o padrão Exif 2.10 a seção
COMPUTED irá retornar ambas as entradas
Copyright.Photographer
e Copyright.Editor enquando que as seções IFD0
contém um array de bytes com o caractere NULL que separa as duas
entradas. Ou apenas a primeira entrada se o tipo de dados estiver errado (funcionamento normal
do Exif). COMPUTED irá conter também a entrada
Copyright que será a string original do copyright
ou uma lista separada por vírgula dos direitos autorais da foto e do editor.
A etiqueta UserComment tem o mesmo problema que a etiqueta de
Copyright. Ela pode guardar dois valores. Primeiro a codificação usada e em segundo o valor
em si. Então a seção IFD contém somente a codificação
ou um array de bytes. A seção COMPUTED irá guardar ambos nas
entradas UserCommentEncoding e
UserComment. A entrada UserComment
está disponível em ambos os casos então deve ser usada em preferência ao
valor da seção IFD0.
exif_read_data também valida etiquetas de dados EXIF de acordo
com a especificação EXIF (&url.exifspec;, página 20).
&reftitle.parameters;
file
A localização do arquivo de imagem. Pode ser uma caminho para o arquivo
(empacotadores de fluxo são também suportados)
ou um fluxo do tipo resource.
required_sections
Uma lista de seções separadas por vírgula que precisam estar presentes no arquivo
para produzir o resultado do tipo array. Se nenhuma das seções informadas
puder ser encontrada o valor de retorno é &false;.
FILEFileName, FileSize, FileDateTime, SectionsFoundCOMPUTED
html, Width, Height, IsColor, e mais se disponíveis. Height e
Width são computadas da mesma maneira que getimagesize
faz, portanto seus valores não deve ser parte de nenhum cabeçalho retornado.
Além disso, html é uma string de texto com altura/largura a ser usado dentro de um
HTML normal.
ANY_TAGQualquer informação que tenha uma etiqueta, ex.: IFD0, EXIF, ...IFD0
Todos os dados etiquetados de IFD0. Em arquivos de imagem normais, contém
o tamanho da imagem e outros dados.
THUMBNAIL
Um arquivo deveria ter uma miniatura se tiver um segundo IFD.
Todas as informações etiquetadas sobre a miniatura embutida estão gravadas
nesta seção.
COMMENTCabeçalho de comentários de imagens JPEG.EXIF
A seção EXIF é uma sub-seção de IFD0. Contém
informação mais detalhada sobre uma imagem. A maior parte destas entradas
são relacionadas a câmeras digitais.
as_arrays
Especifica se cada seção se torna ou não um array. As seções
COMPUTED, THUMBNAIL E
COMMENT de required_sections
sempre se toranm arrays por que contêm valores cujos nomes conflitam
com outras seções.
read_thumbnail
Quando definida para &true; a miniatura em si é lida. Caso contrário, apenas
os dados etiquetados são lidos.
&reftitle.returnvalues;
Retorna um array associativo onde os índices são
os nomes dos cabeçalhos e os valores são os associados com
esses cabeçalhos. Se nenhum dado puder ser retornado,
exif_read_data retornará &false;.
&reftitle.errors;
Erros de nível E_WARNING e/ou E_NOTICE
podem ser disparados para etiquetas não suportadas ou outras condições de erros potenciais, mas a
função ainda tenta lêr toda a informação compreensível.
&reftitle.changelog;
&Version;&Description;8.0.0required_sections agora pode ser nulo.
7.2.0
O parâmetro file agora suporta tanto arquivos locais
quanto recursos de fluxo.
7.2.0
Adicionado suporte aos seguintes formatos EXIF:
SamsungDJIPanasonicSonyPentaxMinoltaSigma/FoveonAGFAKyoceraRicohEpson
&reftitle.examples;
Exemplo exif_read_data
\n";
$exif = exif_read_data('tests/test1.jpg', 'IFD0');
echo $exif===false ? "Dados de cabeçalho não encontrados. \n" : "Imagem contém cabeçalhos ";
$exif = exif_read_data('tests/test2.jpg', 0, true);
echo "test2.jpg: \n";
foreach ($exif as $key => $section) {
foreach ($section as $name => $val) {
echo "$key.$name: $val \n";
}
}
?>
]]>
A primeira chamada falha porque a imagem não tem informações no cabeçalho.
&example.outputs.similar;
exif_read_data com fluxos, disponível a partir do PHP 7.2.0
$value) {
printf(' %s => %s%s', $header, $value, PHP_EOL);
}
?>
]]>
&example.outputs.similar;
576
Width => 1024
IsColor => 1
ByteOrderMotorola => 0
ApertureFNumber => f/5.6
UserComment =>
UserCommentEncoding => UNDEFINED
Copyright => Denis
Thumbnail.FileType => 2
Thumbnail.MimeType => image/jpeg
]]>
&reftitle.notes;
Se mbstring estiver habilitado, exif tentará processar
em codificação unicode e escolher um conjunto de caracteres como especificado por
exif.decode_unicode_motorola e
exif.decode_unicode_intel. A extensão
exif não tentará descobrir a codificação por si mesma, é responsabilidade do programador
especificar corretamente a codificação a ser usada, configurando uma das duas
diretivas ini antes de chamar exif_read_data.
Se file for usado para passar um fluxo a esta função, o fluxo
deve ser do tipo pesquisável. Note que a posição do ponteiro do arquivo não é alterada depois que esta função retorna.
&reftitle.seealso;
exif_thumbnailgetimagesize