Tôi có thể sử dụng phần mềm nào để đọc siêu dữ liệu png? [đóng cửa]


53

Tôi biết rằng tôi có thể tạo một ứng dụng dựa trên Qt nhỏ đơn giản để thêm và đọc siêu dữ liệu png, sử dụng QImage.setText (...) và QImage.text (...). Siêu dữ liệu đó sau đó có thể được đọc bằng lệnh linux gọi là pngmeta.

Nhưng tôi có thể sử dụng phần mềm hình ảnh nào khác để đọc siêu dữ liệu png?

Xin lưu ý rằng tôi đang tìm kiếm các chương trình hình ảnh cho các nền tảng phổ biến, vì vậy vui lòng chỉ định xem ứng dụng của bạn dành cho Windows hay Linux.

Để làm cho câu hỏi rõ ràng hơn, tôi đã đính kèm một img với một số siêu dữ liệu thử nghiệm được đính kèm.

Img với dữ liệu meta

Cảm ơn Johan


Liên kết:

Câu trả lời:


78

Sử dụng ImageMagick:

identify -verbose image.png

ImageMagicknên đa nền tảng. Tôi đã thử nó trên Linux với hình ảnh đính kèm của bạn:

[...]
Tính chất:
  Tác giả: Hans Müller
  Ngày: 2010-12-08 09:45
  ngày: tạo: 2010-12-08T13: 15: 43 + 01: 00
  ngày: sửa đổi: 2010-12-08T13: 15: 43 + 01: 00
  Desc: Một thời gian dài trước đây trong một thiên hà xa xôi ....
  chữ ký: 3b4a54202316a7ae4b4fe0e431d47958181f4bb893493355820d4ba74f9f5ee3
[...]

2
Vui mừng được giúp đỡ. ImageMagickbộ phần mềm có thể làm nhiều hơn nữa, thật đáng để dành chút thời gian với nó IMO.
cYrus

FYI: Điều này sẽ không phát hiện các tệp PNG hoạt hình kể từ tháng 11 năm 2017, bạn cần tìm acTL, v.v. bằng cách sử dụng pngcheck hoặc một cái gì đó ...
Mike Q

Tuy nhiên, xin lưu ý rằng một số trường không phải là siêu dữ liệu bổ sung thực tế có trong dữ liệu tệp: date:createdate:modifychỉ cần trả về siêu dữ liệu của hệ thống tệp và signaturetính toán một hàm băm của dữ liệu hình ảnh.
Ciro Santilli 心 心 30/11/18

15

Một tùy chọn khác là TweakPNG , trên Windows.

Tôi có thể thấy rằng có vấn đề khi hiển thị Hans Müllertên trong hình ảnh của bạn, vì vậy có thể nó không hoạt động với siêu dữ liệu Unicode.

TweakPNG


1
Tôi đã thêm một chuỗi với một ü vì nó cảm thấy như một ý tưởng tốt.
Johan

2
FYI, TweakPNG hoạt động tốt trong Wine .
Denilson Sá Maia

ứng dụng tuyệt vời, đẹp và đơn giản
yarg

10

Nếu bạn đang tìm kiếm một giải pháp chỉ dành cho PNG, hãy thử 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

Đầu ra của pnginfocó thể không đủ dài cho việc sử dụng của bạn:

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

Tôi tìm ở pngchunksđâu?
Iulian Onofrei

@IulianOnofrei được cập nhật
malat

pngcheckdường như không thể giải nén ztxtcác phân đoạn
RobM

7

Tôi không thể thấy Exiftoolđược đề cập ở trên.
Nó thực hiện nhiều định dạng hình ảnh, không chỉ png...
Đây là một "mô-đun perl độc lập với nền tảng", mà còn là một tệp thực thi (có sẵn cho một số nền tảng / HĐH).

Thông tin thêm: http://www.sno.phy.queensu.ca/~phil/exiftool/


4

Như đã đề cập trong một câu hỏi khác , bạn có thể sử dụng pngcheck :

pngcheck -c -v -t foobar.png

Đây là các tùy chọn có liên quan để hiển thị các khối 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. Sử dụng hình ảnh cho cả hai thêm bình luận:

    mogrify -comment "your comment" <IMAGE_NAME>
    
  2. Sau đó đọc lại:

    identify -verbose <IMAGE_NAME>
    

Hoặc, nếu bạn chỉ muốn xem bình luận:

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

Đó là một thực hành tốt để nhúng siêu dữ liệu đúng cách.


Tôi đã sử dụng chuyển đổi để thực hiện điều này để tôi có thể tạo một phiên bản mới, nhưng tôi chưa nhận được mogrify, cảm ơn! convert filename.png -set comment "That rabbits dynamite!" filename.png;
roberthuttinger

xác định chỉ hoạt động cho các thuộc tính được biết đến. Bất kỳ thẻ tùy chỉnh sẽ không hiển thị.
TJR

1

Trong trường hợp ai đó đang sử dụng Magick.NET , bạn có thể nhận được các thuộc tính đó trong C # như thế này:

foreach(string key in image.AttributeNames)
{
    string value = image.GetAttribute(key);
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.