Jakiego oprogramowania mogę używać do odczytu metadanych png? [Zamknięte]

54

Wiem, że mogę stworzyć prostą, małą aplikację opartą na Qt, która dodaje i odczytuje metadane png, używając QImage.setText (...) i QImage.text (...). Te metadane można następnie odczytać za pomocą polecenia linux o nazwie pngmeta.

Ale jakiego innego oprogramowania graficznego mogę użyć do odczytania metadanych png?

Pamiętaj, że szukam programów graficznych dla popularnych platform, więc określ, czy twoja aplikacja jest przeznaczona dla systemu Windows, czy Linux.

Aby wyjaśnić pytanie, dołączyłem img z dołączonymi do niego metadanymi testowymi.

Img z metadanymi

Dzięki, Johan


Spinki do mankietów:

Johan
źródło

Odpowiedzi:

78

Używanie ImageMagick:

identify -verbose image.png

ImageMagickpowinien być wieloplatformowy. Próbowałem w systemie Linux z dołączonym obrazem:

[...]
Nieruchomości:
  Autor: Hans Müller
  Data: 08.12.2010, 09:45
  data: utwórz: 2010-12-08T13: 15: 43 + 01: 00
  data: modyfikacja: 2010-12-08T13: 15: 43 + 01: 00
  Opis: Dawno temu w odległej galaktyce ....
  podpis: 3b4a54202316a7ae4b4fe0e431d47958181f4bb893493355820d4ba74f9f5ee3
[...]
Cyrus
źródło
2
Miło, że mogłem pomóc. ImageMagickpakiet może zrobić znacznie więcej, warto poświęcić mu trochę czasu IMO.
cYrus
FYI: To nie wykryje animowanych plików PNG od listopada 2017 r., Musisz szukać acTL itp. Za pomocą pngcheck lub czegoś ...
Mike Q
Uwaga jednak, że niektóre z tych pól nie są rzeczywiste obecne dodatkowo metadanych w pliku danych: date:createi date:modifypo prostu wrócić metadane systemu plików i signatureoblicza hash danych obrazu.
Ciro Santilli 30 改造 中心 法轮功 六四 事件
15

Inną opcją jest TweakPNG w systemie Windows.

Widzę, że występują problemy z wyświetlaniem Hans Müllernazwy na obrazie, więc może nie działa z metadanymi Unicode.

TweakPNG

paradroid
źródło
1
Dodałem sznurek z ü, ponieważ wydawało mi się to dobrym pomysłem.
Johan
2
FYI, TweakPNG działa dobrze w Wine .
Denilson Sá Maia,
wielki app, ładny i prosty
Yarg
10

Jeśli szukasz rozwiązania tylko do formatu PNG, spróbuj 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

Dane wyjściowe pnginfomogą być niewystarczająco szczegółowe dla twojego użycia:

$ 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
źródło
Gdzie znajdę pngchunks?
Iulian Onofrei
@IulianOnofrei zaktualizowany
niedziela
pngchecknie wydaje się być w stanie dekompresować ztxtsegmentów
RobM
7

Nie widzę Exiftoolwspomnianego powyżej.
Robi wiele formatów obrazów, nie tylko png...
Jest to „niezależny od platformy moduł perla”, ale także plik wykonywalny (dostępny na kilka platform / systemów operacyjnych).

Więcej informacji: http://www.sno.phy.queensu.ca/~phil/exiftool/

Hannu
źródło
4

Jak wspomniano w innym pytaniu , możesz użyć pngcheck :

pngcheck -c -v -t foobar.png

Oto odpowiednie opcje wyświetlania fragmentów 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)
Denilson Sá Maia
źródło
2
  1. Używanie imagemagick do dodawania komentarza:

    mogrify -comment "your comment" <IMAGE_NAME>
    
  2. Następnie przeczytaj to:

    identify -verbose <IMAGE_NAME>
    

Lub jeśli chcesz zobaczyć tylko komentarz:

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

Dobrą praktyką jest prawidłowe osadzanie metadanych.

użytkownik327322
źródło
Użyłem do tego konwersji, aby móc stworzyć nową wersję, ale jeszcze nie dotarłem mogrify, dzięki! convert filename.png -set comment "That rabbits dynamite!" filename.png;
roberthuttinger
zidentyfikuj działa tylko dla znanych właściwości. Żadne tagi niestandardowe nie będą się wyświetlać.
TJR
1

Jeśli ktoś używa Magick.NET , możesz uzyskać te atrybuty w języku C # w następujący sposób:

foreach(string key in image.AttributeNames)
{
    string value = image.GetAttribute(key);
}
yazanpro
źródło