PNG contém dados EXIF ​​como JPG?

100

Eu queria saber se PNG contém dados como o seguinte?

O que fiz foi converter o arquivo jpg para o formato png, e esperava recuperar as mesmas informações que tinha no jpg, conforme abaixo:

Atualmente usando esta biblioteca as3 para ler os dados.

  • IDF0 --- IDF @ [134 - 248] (9 entradas)
    • Orientação (CURTA): 1
    • XResolution (RATIONAL): 72/1
    • Resolução Y (RATIONAL): 72/1
    • Unidade de Resolução (CURTA): 2
    • Software (ASCIIx16): QuickTime 7.6.6
    • DateTime (ASCIIx20): 2011: 10: 02 22:43:37
    • HostComputer (ASCIIx16): Mac OS X 10.6.8
    • Exif IFD (LONG): 8 34853
    • GPS IFD (LONG): 248

 

  • EXIF IDF --- IDF @ [8 - 134] (10 entradas)
    • ExifVersão (UNDEFINEDx4): 0220
    • DateTimeOrigina (ASCIIx20): 2011: 04: 14 17:22:01
    • Comentário do usuário (UNDEFINEDx63): ASCII
    • FlashpixVersion (UNDEFINEDx4): 0100
    • ColorSpace (SHORT): 1
    • PixelXDimension (LONG): 1022
    • PixelYDimension (LONG): 486
    • Desconhecido (ASCIIx13): Image Tag-LOL
    • SceneCaptureType (SHORT): 0

 

  • GPS IDF --- IDF @ [248 - 338] (7 entradas)
    • Índice de interoperabilidade (ASCIIx2): N
    • Versão de interoperabilidade (RATIONALx3) @ 425: 52/1, 1144/100, 0/1
    • Desconhecido (ASCIIx2): W
    • Desconhecido (RATIONALx3): 1/1, 4392/100, 0/1
    • Desconhecido (RATIONAL): 5/1
    • Desconhecido (ASCIIx2): T
    • Desconhecido (RATIONAL): 3694/117

 

user1004413
fonte

Respostas:

131

Edit: A versão 1.5.0 (julho de 2017) das extensões para a especificação PNG 1.2 finalmente adicionou um pedaço EXIF. Resta saber se os codificadores-decodificadores começarão a suportá-lo.

Original: PNG não incorpora informações EXIF. Ele permite, no entanto, incorporar " pedaços " de metadados à imagem. Alguns dos blocos padronizados correspondem a alguns atributos EXIF ​​(dimensões físicas, carimbo de data / hora). E também é possível armazenar dados textuais arbitrários como key=>valuepares ou definir novos tipos de blocos. Então, você poderia, em teoria, armazenar qualquer informação EXIF ​​... mas, infelizmente, em seu próprio formato personalizado. Algumas tentativas de padronização não foram alcançadas, ao que parece.

leonbloy
fonte
30

Editar: em julho de 2017, o PNG oficialmente oferece suporte a um trecho eXIf para armazenar metadados EXIF ​​( especificação ). O ExifTool 10.59 e posterior grava EXIF ​​neste novo trecho em imagens PNG.

Original: ImageMagick armazena informações EXIF ​​em um trecho PNG "Raw profile type APP1" zTXt ao converter de imagens JPEG. Este método de armazenamento de EXIF ​​em imagens PNG também é compatível com ExifTool (e acredito que Exiv2 também), mas não faz parte da especificação PNG ou EXIF.

PhilHarvey
fonte
É muito bom saber! Você sabe se ele também extrai do TIFF?
Olivier - interfaSys
4
O grupo PNG recentemente considerou adicionar um novo bloco "eXIf" e / ou "zXIf" para armazenar informações EXIF. O ExifTool 10.43 adicionou suporte para os pedaços "exIf" e "zxIf" em suporte a isso.
PhilHarvey
9

PNG não oferece suporte à incorporação de informações EXIF. Quando você converte de JPEG para PNG, as informações são perdidas.

Percepção
fonte
1
Ei, há alguma documentação que diga isso? Porque eu preciso de uma prova para deixar meu supervisor saber que estou trabalhando em um projeto que exige que eu leia as informações EXIF ​​para png. Se for esse o caso, eu poderia mostrar a ele e informá-lo sobre isso
user1004413
9
Você pode apontá-lo para a especificação , que não tem especificação implícita ou explícita para incorporação de dados EXIF, ou para a entrada PNG do wiki .
Percepção de
5
Isso não é inteiramente verdade. Por exemplo, se você usar convert(do ImageMagick) para converter um JPEG em PNG e depois usar convertpara converter o PNG de volta em JPEG, o novo JPEG ainda terá os dados EXIF ​​nele.
mofoe,
O GIMP armazena "Comentário do usuário" em um PNG como metadados "EXIF2". Parece que há um campo para isso nos pedaços. Os comos e por que exatos não tenho certeza. Eu mesmo tenho um requisito semelhante.
VectorVictor
1
Em 2012, essa resposta pode ter sido verdadeira, mas ainda está correta?
RockPaperLz- Mask it or Casket
7

Em julho de 2017 , parece haver um bloco oficialmente registrado para dados EXIF ​​chamado ... eXIf :

O segmento de dados do bloco eXIf contém um perfil Exif no formato especificado em "4.7.2 Estrutura de interoperabilidade de APP1 em dados compactados" de [CIPA DC-008-2016], exceto que o marcador JPEG APP1, comprimento e "Exif O código de ID "descrito em 4.7.2 (C), ou seja," Exif ", NULL e byte de preenchimento, não estão incluídos.

Observe que isso é A) com apenas alguns meses de idade (no momento da redação) e B) uma extensão opcional, não faz parte da especificação básica. Portanto, o suporte para o trecho eXIf pode ser limitado em muitos aplicativos.

8bittree
fonte
2

Você quis dizer:

  1. Os arquivos PNG contêm os itens de metadados que você listou? Resposta curta: varia.
  2. O PNG usa o padrão EXIF ​​para armazenar esses metadados? Resposta curta: geralmente não.

Geralmente, o PNG usa vários blocos que fazem parte do padrão PNG para armazenar metadados. Para percorrer sua lista:

  • Orientação - Não aplicável a PNG - fixada linha por linha começando do canto superior esquerdo.
  • XResolution, YResolution, ResolutionUnit - bloco de pHYs .
  • Software, HostComputer, outros metadados textuais - pedaços tEXt, iTXt, zTXt .
  • DateTime - Não está claro para mim qual é a data / hora. tIME indica a data / hora da última modificação nos dados da imagem; outras datas / horas podem ser armazenadas em blocos de texto. A hora de criação é na verdade uma chave de bloco de texto definida, mas o formato e como os fusos horários são tratados não são estipulados, o que é um design ruim.
  • ColorSpace, PixelXDimension, PixelYDimension - não tenho certeza de como seriam metadados. Eles são fundamentais para a imagem e, como tal, estão na parte IHDR .
  • Não tenho certeza do que os outros que você listou significam.

Mas, de forma intrigante, nos últimos anos, um trecho eXIf foi adicionado à lista oficial de trechos de extensão (que é essencialmente um adendo à especificação PNG). Presumivelmente, o objetivo é preservar as informações em arquivos convertidos de JPEG / TIFF para PNG e não se destina ao uso em arquivos criados originalmente como PNGs, mas isso não está claro.

Stewart
fonte
0

Sim e não.

Como outras respostas já declararam, o PNG não tinha um pedaço EXIF ​​formal até eXIfser adicionado na v1.5.0 (2017) e, até onde sei, esse pedaço ainda não conta com amplo suporte.

Mas isso é porque não precisa disso. Muitos pedaços de software codificam EXIF ​​em um PNG por convenção em um iTXt(ou compactado zTXt) fragmento notado "Tipo de perfil bruto APP1" . O eXIftrecho mais recente tinha como objetivo fornecer uma localização padronizada para isso, embora, em minha opinião, o navio já tenha partido.

Além disso, muitos dos metadados do padrão EXIF ​​podem ser representados por XMP, um mecanismo de transporte de metadados alternativo e mais recente que possui um namespace EXIF ​​precisamente para essa finalidade. Os arquivos PNG incluem documentos XMP (incluindo metadados EXIF ​​traduzidos) em iTXtblocos há anos. Você descobrirá que muitos processadores são convertidos entre os dois instantaneamente.

Asteróides com asas
fonte
Esses mesmos processadores, quaisquer que sejam, convertem XMP ou EXIF ​​de / para os vários pedaços de metadados PNG padrão?
Stewart
@Stewart Os fragmentos de metadados PNG padrão são limitados e não podem representar a amplitude dos dados EXIF ​​ou XMP. É por isso que historicamente codificamos EXIF ​​/ XMP nos arquivos (em blocos de texto).
Asteroids With Wings
OK, vou reformular isso: Esses mesmos processadores convertem os itens de metadados XMP ou EXIF ​​que podem ser representados por pedaços de metadados PNG padrão em pedaços de metadados PNG padrão e vice-versa?
Stewart
@Stewart, não sei. Eu duvido. Se o fizerem, será muito limitado. De modo geral, não há realmente nenhum benefício em fazer isso; os campos EXIF ​​e XMP podem não ser padrão, mas são completamente convencionais e amplamente usados. Então todo mundo usa isso. Os metadados PNG incluem algumas palavras-chave / coisas do autor, mas são principalmente dados de imagem.
Asteróides com asas