Quale software posso usare per leggere metadati png? [chiuso]


54

So che posso creare una semplice piccola applicazione basata su Qt che aggiunge e legge metadati png, usando QImage.setText (...) e QImage.text (...). I metadati possono quindi essere letti con un comando linux chiamato pngmeta.

Ma quale altro software di immagine posso usare per leggere i metadati del png?

Tieni presente che sto cercando programmi di immagini per le piattaforme comuni, quindi specifica se la tua applicazione è per Windows o Linux.

Per chiarire la domanda ho allegato un img con alcuni metadati di prova allegati.

L'img con metadati

Grazie Johan


link:

Risposte:


78

Utilizzando ImageMagick:

identify -verbose image.png

ImageMagickdovrebbe essere multipiattaforma. L'ho provato su Linux con l'immagine allegata:

[...]
Proprietà:
  Autore: Hans Müller
  Data: 2010-12-08 09:45
  data: creare: 2010-12-08T13: 15: 43 + 01: 00
  data: modifica: 2010-12-08T13: 15: 43 + 01: 00
  Desc: Molto tempo fa in una galassia molto lontana ....
  firma: 3b4a54202316a7ae4b4fe0e431d47958181f4bb893493355820d4ba74f9f5ee3
[...]

2
Felice di aiutare. ImageMagickla suite può fare molto di più, vale la pena passare un po 'di tempo con essa IMO.
cYrus

Cordiali saluti: Questo non rileverà i file PNG animati a partire da novembre 2017, devi cercare acTL ecc usando pngcheck o qualcosa del genere ...
Mike Q

Si noti tuttavia che alcuni di questi campi non sono veri e propri metadati extra presenti nei dati del file: date:createe date:modifysemplicemente restituiscono i metadati del file system e signaturecalcola un hash dei dati dell'immagine.
Ciro Santilli 30 改造 中心 法轮功 六四 事件

15

Un'altra opzione è TweakPNG , su Windows.

Vedo che si verificano problemi nella visualizzazione del Hans Müllernome nell'immagine, quindi forse non funziona con i metadati Unicode.

TweakPNG


1
Ho aggiunto una stringa con un ü poiché mi è sembrata una buona idea.
Johan,

2
Cordiali saluti, TweakPNG funziona bene all'interno di Wine .
Denilson Sá Maia,

ottima app, bella e semplice
yarg

10

Se stai cercando una soluzione solo PNG, prova 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

L'output di pnginfopotrebbe non essere abbastanza dettagliato per il tuo utilizzo:

$ 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....

Dove posso trovare pngchunks?
Iulian Onofrei,

@IulianOnofrei aggiornato
malat

pngchecknon sembra essere in grado di decomprimere i ztxtsegmenti
RobM il

7

Non riesco a vedere Exiftoolmenzionato sopra.
Fa molti formati di immagine, non solo png...
È un "modulo perl indipendente dalla piattaforma", ma anche un eseguibile (disponibile per diverse piattaforme / SO).

Maggiori informazioni: http://www.sno.phy.queensu.ca/~phil/exiftool/


4

Come menzionato in un'altra domanda , puoi usare pngcheck :

pngcheck -c -v -t foobar.png

Queste sono le opzioni pertinenti per mostrare i pezzi 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. Utilizzando imagemagick per entrambi l'aggiunta del commento:

    mogrify -comment "your comment" <IMAGE_NAME>
    
  2. Quindi rileggendolo:

    identify -verbose <IMAGE_NAME>
    

Oppure, se vuoi vedere solo il commento:

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

È buona norma incorporare correttamente i metadati.


Stavo usando convert per realizzare questo in modo da poter creare una nuova versione, ma non ci ero mogrifyancora arrivato , grazie! convert filename.png -set comment "That rabbits dynamite!" filename.png;
roberthuttinger,

identificare funziona solo per proprietà note. Eventuali tag personalizzati non verranno visualizzati.
TJR,

1

Nel caso in cui qualcuno stia usando Magick.NET , puoi ottenere quegli attributi in C # in questo modo:

foreach(string key in image.AttributeNames)
{
    string value = image.GetAttribute(key);
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.