Mit welcher Software kann ich PNG-Metadaten lesen? [geschlossen]

53

Ich weiß, dass ich mit QImage.setText (...) und QImage.text (...) eine einfache kleine Qt-basierte Anwendung erstellen kann, die PNG-Metadaten hinzufügt und liest. Diese Metadaten können dann mit einem Linux-Befehl namens pngmeta gelesen werden.

Aber mit welcher anderen Bildsoftware kann ich die PNG-Metadaten auslesen?

Bitte beachten Sie, dass ich Image-Programme für die gängigen Plattformen suche. Geben Sie daher bitte an, ob Ihre Anwendung für Windows oder Linux ist.

Um die Frage klarer zu machen, habe ich ein Bild mit einigen Testmetadaten angehängt.

Das Bild mit Metadaten

Danke Johan


Links:

Johan
quelle

Antworten:

78

Verwenden von ImageMagick:

identify -verbose image.png

ImageMagicksollte plattformübergreifend sein. Ich habe es unter Linux mit Ihrem angehängten Image versucht:

[...]
Eigenschaften:
  Autor: Hans Müller
  Datum: 08.12.2010 09:45 Uhr
  Datum: Erstellen: 2010-12-08T13: 15: 43 + 01: 00
  Datum: Änderung: 2010-12-08T13: 15: 43 + 01: 00
  Desc: Vor langer Zeit in einer weit entfernten Galaxie ....
  Signatur: 3b4a54202316a7ae4b4fe0e431d47958181f4bb893493355820d4ba74f9f5ee3
[...]
cYrus
quelle
2
Froh, dass ich Helfen kann. ImageMagickSuite kann viel mehr, es lohnt sich, etwas Zeit damit zu verbringen IMO.
CYRUS
Zu Ihrer Information: Animierte PNG-Dateien werden ab November 2017 nicht mehr erkannt. Sie müssen mit pngcheck oder etwas anderem nach acTL usw. suchen ...
Mike Q
Beachten Sie jedoch , dass einige dieser Felder sind nicht unbedingt zusätzliche Metadaten in der Datei Daten: date:createund date:modifyeinfach die Dateisystem - Metadaten zurück und signatureberechnet einen Hash der Bilddaten.
Ciro Santilli新疆改造中心法轮功六四事件
15

Eine weitere Option ist TweakPNG unter Windows.

Ich kann feststellen, dass Probleme bei der Anzeige des Hans MüllerNamens in Ihrem Bild auftreten. Daher funktioniert dies möglicherweise nicht mit Unicode-Metadaten.

TweakPNG

paradroid
quelle
1
Ich habe eine Zeichenfolge mit einem ü hinzugefügt, da dies eine gute Idee war.
Johan
2
Zu Ihrer Information, TweakPNG funktioniert gut in Wine .
Denilson Sá Maia
tolle app, nett und einfach
yarg
10

Wenn Sie eine reine PNG-Lösung suchen, versuchen Sie Folgendes 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

Die Ausgabe von ist pnginfomöglicherweise nicht ausführlich genug für Ihre Verwendung:

$ 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....
malat
quelle
Wo finde ich pngchunks?
Iulian Onofrei
@IulianOnofrei aktualisiert
Uhr
pngcheckscheint ztxtSegmente nicht dekomprimieren zu können
RobM
7

Ich kann oben nicht sehen Exiftool.
Es unterstützt viele Bildformate, nicht nur png...
Es ist ein "plattformunabhängiges Perl-Modul", sondern auch eine ausführbare Datei (verfügbar für mehrere Plattformen / Betriebssysteme).

Weitere Informationen: http://www.sno.phy.queensu.ca/~phil/exiftool/

Hannu
quelle
4

Wie in einer anderen Frage erwähnt , können Sie pngcheck verwenden :

pngcheck -c -v -t foobar.png

Dies sind die relevanten Optionen zum Anzeigen von PNG-Chunks:

-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)
Denilson Sá Maia
quelle
2
  1. Verwenden von imagemagick zum Hinzufügen des Kommentars:

    mogrify -comment "your comment" <IMAGE_NAME>
    
  2. Dann lies es zurück:

    identify -verbose <IMAGE_NAME>
    

Oder, wenn Sie nur den Kommentar sehen wollen:

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

Es empfiehlt sich, die Metadaten ordnungsgemäß einzubetten.

user327322
quelle
Ich habe konvertiert, um dies zu erreichen, damit ich eine neue Version erstellen konnte, aber ich war noch nicht dazu gekommen mogrify, danke! convert filename.png -set comment "That rabbits dynamite!" filename.png;
roberthuttinger
Identifizierung funktioniert nur für bekannte Eigenschaften. Benutzerdefinierte Tags werden nicht angezeigt.
TJR
1

Falls jemand Magick.NET verwendet , können Sie diese Attribute in C # wie folgt abrufen :

foreach(string key in image.AttributeNames)
{
    string value = image.GetAttribute(key);
}
yazanpro
quelle