Quel logiciel puis-je utiliser pour lire les métadonnées png? [fermé]


54

Je sais que je peux créer une petite application simple basée sur Qt qui ajoute et lit des métadonnées png, à l'aide de QImage.setText (...) et QImage.text (...). Ces métadonnées peuvent ensuite être lues avec une commande linux appelée pngmeta.

Mais quel autre logiciel d’image puis-je utiliser pour lire les métadonnées png?

Veuillez noter que je recherche des programmes d’image pour les plates-formes communes. Veuillez donc spécifier si votre application est pour Windows ou Linux.

Pour clarifier la question, j’ai joint une img à laquelle étaient attachées des métadonnées de test.

L'img avec métadonnées

Merci Johan


Liens:

Réponses:


78

Utilisant ImageMagick:

identify -verbose image.png

ImageMagickdevrait être multi-plateforme. Je l'ai essayé sur Linux avec votre image jointe:

[...]
Propriétés:
  Auteur: Hans Müller
  Date: 2010-12-08 09:45
  date: créer: 2010-12-08T13: 15: 43 + 01: 00
  Date modification: 2010-12-08T13: 15: 43 + 01: 00
  Desc: Il y a longtemps dans une galaxie très lointaine ....
  signature: 3b4a54202316a7ae4b4fe0e431d47958181f4bb893493355820d4ba74f9f5ee3
[...]

2
Heureux de vous aider. ImageMagicksuite peut faire beaucoup plus, cela vaut la peine de passer du temps avec elle IMO.
cYrus

FYI: Cela ne détectera pas les fichiers PNG animés à partir de novembre 2017, vous devez rechercher acTL, etc. à l'aide de pngcheck ou quelque chose comme ça ...
Mike Q

Notez cependant que certains de ces champs ne sont pas des métadonnées supplémentaires réelles présentes dans les données du fichier: date:createet date:modifyretourner simplement les métadonnées du système de fichiers, et signaturecalcule un hachage des données d'image.
Ciro Santilli a annoncé

15

Une autre option est TweakPNG , sous Windows.

Je peux voir que des problèmes s’affichent pour afficher le Hans Müllernom dans votre image. Cela ne fonctionne donc peut-être pas avec les métadonnées Unicode.

TweakPNG


1
J'ai ajouté une chaîne avec un ü car c'était une bonne idée.
Johan

2
Pour votre information, TweakPNG fonctionne bien dans Wine .
Denilson Sá Maia

super application, agréable et simple
mercredi

10

Si vous recherchez une solution exclusivement PNG, essayez 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 sortie de pnginfopeut ne pas être assez détaillée pour votre utilisation:

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

Où puis-je trouver pngchunks?
Iulian Onofrei

@IulianOnofrei mis à jour
mardi

pngcheckne semble pas pouvoir décompresser les ztxtsegments
RobM

7

Je ne peux pas voir Exiftoolmentionné ci-dessus.
Il fait beaucoup de formats d'image, non seulement png...
C'est un "module perl indépendant de la plate-forme", mais également un exécutable (disponible pour plusieurs plates-formes / systèmes d'exploitation).

Plus d'infos: http://www.sno.phy.queensu.ca/~phil/exiftool/


4

Comme mentionné dans une autre question , vous pouvez utiliser pngcheck :

pngcheck -c -v -t foobar.png

Voici les options pertinentes pour afficher les morceaux 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. Utiliser imagemagick pour ajouter le commentaire:

    mogrify -comment "your comment" <IMAGE_NAME>
    
  2. Puis relisant:

    identify -verbose <IMAGE_NAME>
    

Ou, si vous voulez voir uniquement le commentaire:

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

C'est une bonne pratique d'intégrer correctement les métadonnées.


J'utilisais convert pour y parvenir afin de pouvoir créer une nouvelle version, mais je ne l'avais pas mogrifyencore fait, merci! convert filename.png -set comment "That rabbits dynamite!" filename.png;
roberthuttinger

identifier uniquement les œuvres pour les propriétés connues. Aucune balise personnalisée ne sera affichée.
TJR

1

Si quelqu'un utilise Magick.NET , vous pouvez obtenir ces attributs en C # comme ceci:

foreach(string key in image.AttributeNames)
{
    string value = image.GetAttribute(key);
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.