Que software posso usar para ler os metadados png? [fechadas]


54

Sei que posso criar um pequeno aplicativo baseado em Qt que adiciona e lê metadados png, usando QImage.setText (...) e QImage.text (...). Esses metadados podem ser lidos com um comando linux chamado pngmeta.

Mas que outro software de imagem posso usar para ler os metadados png?

Observe que estou procurando programas de imagem para plataformas comuns; portanto, especifique se seu aplicativo é para Windows ou Linux.

Para esclarecer a questão, anexei um img com alguns metadados de teste.

O img com metadados

Obrigado Johan


Ligações:

Respostas:


78

Usando ImageMagick:

identify -verbose image.png

ImageMagickdeve ser multiplataforma. Eu tentei no Linux com a sua imagem anexada:

[...]
Propriedades:
  Autor: Hans Müller
  Data: 2010-12-08 09:45
  data: create: 2010-12-08T13: 15: 43 + 01: 00
  data: modificar: 2010-12-08T13: 15: 43 + 01: 00
  Desc: Há muito tempo, em uma galáxia muito distante ....
  signature: 3b4a54202316a7ae4b4fe0e431d47958181f4bb893493355820d4ba74f9f5ee3
[...]

2
Feliz em ajudar. ImageMagicksuite pode fazer muito mais, vale a pena gastar algum tempo com ele IMO.
precisa

FYI: Este não irá detectar arquivos PNG animadas a partir de novembro de 2017, você precisa olhar para ACTL etc usando pngcheck ou algo assim ...
Mike Q

Nota, contudo, que alguns desses campos não estão real extra metadados presentes no arquivo de dados: date:createe date:modifysimplesmente devolver os metadados do sistema de arquivos, e signaturecalcula um hash dos dados da imagem.
Ciro Santilli escreveu:

15

Outra opção é TweakPNG , no Windows.

Percebo que está tendo problemas para exibir o Hans Müllernome na sua imagem, talvez não funcione com os metadados Unicode.

TweakPNG


1
Eu adicionei uma string com um ü, pois parecia uma boa ideia.
Johan

2
FYI, TweakPNG funciona bem dentro do Wine .
Denilson Sá Maia

app grande, agradável e simples
Yarg

10

Se você estiver procurando por uma solução somente PNG, tente pngchunks:

$ sudo apt-get install pngtools
$ pngchunks UiagX.png
Chunk: Data Length 13 (max 2147483647), Type 1380206665 [IHDR]
  Critical, public, PNG 1.2 compliant, unsafe to copy
  IHDR Width: 800
  IHDR Height: 600
  IHDR Bitdepth: 8
  IHDR Colortype: 2
  IHDR Compression: 0
  IHDR Filter: 0
  IHDR Interlace: 0
  IHDR Compression algorithm is Deflate
  IHDR Filter method is type zero (None, Sub, Up, Average, Paeth)
  IHDR Interlacing is disabled
  Chunk CRC: 353637671
Chunk: Data Length 9 (max 2147483647), Type 1935231088 [pHYs]
  Ancillary, public, PNG 1.2 compliant, safe to copy
  ... Unknown chunk type
  Chunk CRC: 10132504
Chunk: Data Length 19 (max 2147483647), Type 1951942004 [tEXt]
  Ancillary, public, PNG 1.2 compliant, safe to copy
  ... Unknown chunk type
  Chunk CRC: -1325924661
Chunk: Data Length 21 (max 2147483647), Type 1951942004 [tEXt]
  Ancillary, public, PNG 1.2 compliant, safe to copy
  ... Unknown chunk type
  Chunk CRC: 134517081
Chunk: Data Length 58 (max 2147483647), Type 1951945850 [zTXt]
  Ancillary, public, PNG 1.2 compliant, safe to copy
  ... Unknown chunk type
  Chunk CRC: 1701487776
Chunk: Data Length 572939 (max 2147483647), Type 1413563465 [IDAT]
  Critical, public, PNG 1.2 compliant, unsafe to copy
  IDAT contains image data
  Chunk CRC: 1174233759
Chunk: Data Length 0 (max 2147483647), Type 1145980233 [IEND]
  Critical, public, PNG 1.2 compliant, unsafe to copy
  IEND contains no data
  Chunk CRC: -1371381630

A saída de pnginfopode não ser detalhada o suficiente para seu uso:

$ pnginfo UiagX.png
UiagX.png...
  Image Width: 800 Image Length: 600
  Bitdepth (Bits/Sample): 8
  Channels (Samples/Pixel): 3
  Pixel depth (Pixel Depth): 24
  Colour Type (Photometric Interpretation): RGB 
  Image filter: Single row per byte filter 
  Interlacing: No interlacing 
  Compression Scheme: Deflate method 8, 32k window
  Resolution: 2835, 2835 (pixels per meter)
  FillOrder: msb-to-lsb
  Byte Order: Network (Big Endian)
  Number of text strings: 3 of 9
    Author (tEXt uncompressed): Hans Müller
    Date (tEXt uncompressed): 2010-12-08 09:45
    Desc (tEXt uncompressed): A long time ago in a galaxy far far away....

Onde eu encontro pngchunks?
Iulian Onofrei 12/02/2015

@IulianOnofrei atualizado
malat

pngcheckparece não ser capaz de descomprimir ztxtsegmentos
RobM 25/06

7

Não consigo ver Exiftoolmencionado acima.
Ele faz muitos formatos de imagem, não apenas png...
É um "módulo perl independente de plataforma", mas também um executável (disponível para várias plataformas / SO).

Mais informações: http://www.sno.phy.queensu.ca/~phil/exiftool/


4

Como mencionado em outra pergunta , você pode usar pngcheck :

pngcheck -c -v -t foobar.png

Estas são as opções relevantes para mostrar blocos PNG:

-7  print contents of tEXt chunks, escape chars >=128 (for 7-bit terminals)
-c  colorize output (for ANSI terminals)
-p  print contents of PLTE, tRNS, hIST, sPLT and PPLT (can be used with -q)
-t  print contents of tEXt chunks (can be used with -q)
-v  test verbosely (print most chunk data)

2
  1. Usando imagemagick para adicionar o comentário:

    mogrify -comment "your comment" <IMAGE_NAME>
    
  2. Depois, lendo-o novamente:

    identify -verbose <IMAGE_NAME>
    

Ou, se você quiser ver apenas o comentário:

identify -verbose <IMAGE_NAME> | grep "comment:"

É uma boa prática incorporar os metadados corretamente.


Eu estava usando o convert para fazer isso e criar uma nova versão, mas ainda não tinha conseguido mogrify, obrigado! convert filename.png -set comment "That rabbits dynamite!" filename.png;
22417 Roberthuttinger #

identificar apenas funciona para propriedades conhecidas. Quaisquer tags personalizadas não serão exibidas.
TJR

1

Caso alguém esteja usando o Magick.NET , você pode obter esses atributos em C # assim:

foreach(string key in image.AttributeNames)
{
    string value = image.GetAttribute(key);
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.