¿Qué software puedo usar para leer metadatos png? [cerrado]


54

Sé que puedo crear una pequeña aplicación simple basada en Qt que agrega y lee metadatos png, usando QImage.setText (...) y QImage.text (...). Esos metadatos se pueden leer con un comando de Linux llamado pngmeta.

¿Pero qué otro software de imagen puedo usar para leer los metadatos png?

Tenga en cuenta que estoy buscando programas de imágenes para las plataformas comunes, así que especifique si su aplicación es para Windows o Linux.

Para aclarar la pregunta, adjunté un img con algunos metadatos de prueba adjuntos.

El img con metadatos

Gracias Johan


Campo de golf:

Respuestas:


78

Utilizando ImageMagick:

identify -verbose image.png

ImageMagickdebe ser multiplataforma. Lo probé en Linux con tu imagen adjunta:

[...]
Propiedades:
  Autor: Hans Müller
  Fecha: 2010-12-08 09:45
  fecha: crear: 2010-12-08T13: 15: 43 + 01: 00
  fecha: modificar: 2010-12-08T13: 15: 43 + 01: 00
  Desc: Hace mucho tiempo en una galaxia muy muy lejana ...
  firma: 3b4a54202316a7ae4b4fe0e431d47958181f4bb893493355820d4ba74f9f5ee3
[...]

2
Encantado de ayudar. ImageMagicksuite puede hacer mucho más, vale la pena pasar algún tiempo con él en mi opinión.
cYrus

FYI: Esto no detectará archivos PNG animados a partir de noviembre de 2017, debe buscar acTL, etc. con pngcheck o algo así ...
Mike Q

Sin embargo, tenga en cuenta que algunos de esos campos no son metadatos adicionales reales presentes en los datos del archivo: date:createy date:modifysimplemente devuelve los metadatos del sistema de archivos y signaturecalcula un hash de los datos de la imagen.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

15

Otra opción es TweakPNG , en Windows.

Puedo ver que tiene problemas para mostrar el Hans Müllernombre en su imagen, por lo que tal vez no funcione con los metadatos Unicode.

TweakPNG


1
Agregué una cadena con un ü ya que me pareció una buena idea.
Johan

2
FYI, TweakPNG funciona bien dentro de Wine .
Denilson Sá Maia

gran aplicación, agradable y simple
yarg

10

Si está buscando una solución solo PNG, intente 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

La salida de pnginfopuede no ser lo suficientemente detallada para su 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....

¿Dónde se encuentra pngchunks?
Iulian Onofrei

@IulianOnofrei actualizado
malat

pngcheckno parece ser capaz de descomprimir ztxtsegmentos
RobM

7

No puedo ver lo Exiftoolmencionado anteriormente.
Hace muchos formatos de imagen, no solo png...
Es un "módulo perl independiente de la plataforma", sino también un ejecutable (disponible para varias plataformas / SO).

Más información: http://www.sno.phy.queensu.ca/~phil/exiftool/


4

Como se mencionó en otra pregunta , puede usar pngcheck :

pngcheck -c -v -t foobar.png

Estas son las opciones relevantes para mostrar fragmentos 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 agregar el comentario:

    mogrify -comment "your comment" <IMAGE_NAME>
    
  2. Luego lo leí de nuevo:

    identify -verbose <IMAGE_NAME>
    

O, si solo quieres ver el comentario:

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

Es una buena práctica incrustar los metadatos correctamente.


Estaba usando convertir para lograr esto para poder crear una nueva versión, pero aún no lo había hecho mogrify, ¡gracias! convert filename.png -set comment "That rabbits dynamite!" filename.png;
roberthuttinger

identificar solo obras para propiedades conocidas. Cualquier etiqueta personalizada no aparecerá.
TJR

1

En caso de que alguien use Magick.NET , puede obtener esos atributos en C # de esta manera:

foreach(string key in image.AttributeNames)
{
    string value = image.GetAttribute(key);
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.