Perangkat lunak apa yang dapat saya gunakan untuk membaca metadata png? [Tutup]

54

Saya tahu bahwa saya dapat membuat aplikasi sederhana berbasis Qt kecil yang menambahkan dan membaca png metadata, menggunakan QImage.setText (...) dan QImage.text (...). Metadata itu kemudian dapat dibaca dengan perintah linux yang disebut pngmeta.

Tapi perangkat lunak gambar apa lagi yang bisa saya gunakan untuk membaca metadata png?

Harap dicatat bahwa saya mencari program gambar untuk platform umum, jadi harap tentukan apakah aplikasi Anda untuk Windows atau Linux.

Untuk memperjelas pertanyaan saya melampirkan img dengan beberapa metadata uji terlampir.

Gambar dengan data meta

Terima kasih, Johan


Tautan:

Johan
sumber

Jawaban:

78

Menggunakan ImageMagick:

identify -verbose image.png

ImageMagickharus cross-platform. Saya mencobanya di Linux dengan gambar terlampir:

[...]
Properti:
  Penulis: Hans Müller
  Tanggal: 2010-12-08 09:45
  tanggal: buat: 2010-12-08T13: 15: 43 + 01: 00
  tanggal: ubah: 2010-12-08T13: 15: 43 + 01: 00
  Desc: Dulu di galaksi yang sangat jauh ....
  tanda tangan: 3b4a54202316a7ae4b4fe0e431d47958181f4bb893493355820d4ba74f9f5ee3
[...]
cYrus
sumber
2
Senang untuk membantu. ImageMagicksuite dapat melakukan lebih banyak lagi, ada baiknya untuk menghabiskan waktu dengan itu IMO.
cYrus
FYI: Ini tidak akan mendeteksi file-file PNG animasi pada Nov 2017, Anda perlu mencari acTL dll menggunakan pngcheck atau sesuatu ...
Mike Q
Namun perlu dicatat bahwa beberapa bidang tersebut bukan metadata tambahan aktual yang ada dalam data file: date:createdan date:modifycukup kembalikan metadata sistem file, dan signaturehitung hash dari data gambar.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
15

Opsi lain adalah TweakPNG , di Windows.

Saya dapat melihat bahwa ada masalah dalam menampilkan Hans Müllernama di gambar Anda, jadi mungkin tidak bekerja dengan Unicode metadata.

TweakPNG

paradroid
sumber
1
Saya menambahkan string dengan ü karena rasanya ide yang bagus.
Johan
2
FYI, TweakPNG berfungsi bagus di dalam Wine .
Denilson Sá Maia
aplikasi hebat, bagus & sederhana
yarg
10

Jika Anda mencari solusi khusus PNG, coba 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

Output dari pnginfomungkin tidak cukup untuk penggunaan Anda:

$ 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
sumber
Di mana saya menemukan pngchunks?
Iulian Onofrei
@IulianOnofrei diperbarui
malat
pngchecktampaknya tidak dapat mendekompresi ztxtsegmen
RobM
7

Saya tidak bisa melihat yang Exiftooldisebutkan di atas.
Itu banyak format gambar, tidak hanya png...
Ini adalah "modul perl platform independen", tetapi juga executable (tersedia untuk beberapa platform / OS).

Info lebih lanjut: http://www.sno.phy.queensu.ca/~phil/exiftool/

Hannu
sumber
4

Seperti disebutkan dalam pertanyaan lain , Anda dapat menggunakan pngcheck :

pngcheck -c -v -t foobar.png

Ini adalah opsi yang relevan untuk menampilkan potongan 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 Sa Maia
sumber
2
  1. Menggunakan imagemagick untuk menambahkan komentar:

    mogrify -comment "your comment" <IMAGE_NAME>
    
  2. Kemudian bacalah kembali:

    identify -verbose <IMAGE_NAME>
    

Atau, jika Anda hanya ingin melihat komentar:

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

Ini adalah praktik yang baik untuk menanamkan metadata dengan benar.

pengguna327322
sumber
Saya menggunakan konversi untuk menyelesaikan ini sehingga saya dapat membuat versi baru, tetapi saya belum mendapatkannya mogrify, terima kasih! convert filename.png -set comment "That rabbits dynamite!" filename.png;
roberthuttinger
hanya mengidentifikasi karya untuk properti yang dikenal. Tag khusus apa pun tidak akan muncul.
TJR
1

Jika seseorang menggunakan Magick.NET , Anda bisa mendapatkan atribut tersebut dalam C # seperti ini:

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