Яке програмне забезпечення можна використовувати для читання метаданих png? [зачинено]


54

Я знаю, що я можу створити маленький простий додаток на основі Qt, який додає та читає метадані png, використовуючи QImage.setText (...) та QImage.text (...). Ці метадані можуть бути прочитані командою linux під назвою pngmeta.

Але яке інше програмне забезпечення для зображень я можу використовувати, щоб прочитати метадані png?

Зауважте, що я шукаю графічні програми для загальних платформ, тому уточнюйте, чи ваша програма призначена для Windows або Linux.

Щоб зробити питання зрозумілішим, я додав img із доданими до нього тестовими метаданими.

Зображення з метаданими

Дякую Йохану


Посилання:

Відповіді:


78

Використання ImageMagick:

identify -verbose image.png

ImageMagickмає бути кросплатформенним. Я спробував це в Linux із вкладеним вами зображенням:

[...]
Властивості:
  Автор: Ганс Мюллер
  Дата: 2010-12-08 09:45
  дата: створення: 2010-12-08T13: 15: 43 + 01: 00
  дата: змінити: 2010-12-08T13: 15: 43 + 01: 00
  Desc: Давним-давно в галактиці ...
  підпис: 3b4a54202316a7ae4b4fe0e431d47958181f4bb893493355820d4ba74f9f5ee3
[...]

2
Радий допомогти. ImageMagickЛюкс може зробити набагато більше, варто провести з ним деякий час IMO.
cYrus

FYI: Це не буде виявляти анімовані файли PNG станом на листопад 2017 року, вам потрібно шукати ACTL тощо за допомогою pngcheck або чогось іншого
Mike Q

Однак зауважте, що деякі з цих полів не є фактичними зайвими метаданими, присутніми у файлових даних: date:createі date:modifyпросто поверніть метадані файлової системи та signatureобчислює хеш даних зображень.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

15

Інший варіант - TweakPNG , в Windows.

Я бачу, що виникають проблеми із відображенням Hans Müllerімені на вашому зображенні, тому, можливо, це не працює з метаданими Unicode.

TweakPNG


1
Я додав рядок з ü, оскільки це здавалося гарною ідеєю.
Йохан

2
FYI, TweakPNG добре працює у Wine .
Denilson Sá Maia

чудовий додаток, приємно та просто
yarg

10

Якщо ви шукаєте рішення, що стосується лише PNG, спробуйте 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

Вихід pnginfoможе бути недостатньо багатослівним для вашого використання:

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

Де я можу знайти pngchunks?
Юліан Онофрей

@IulianOnofrei оновлено
Малатья

pngcheckЗдається, не вдасться розпакувати ztxtсегменти
RobM

7

Я не бачу Exiftoolзгаданого вище.
Це багато форматів зображень, не тільки png...
Це "незалежний від платформи модуль perl", але і виконуваний файл (доступний для декількох платформ / ОС).

Більше інформації: http://www.sno.phy.queensu.ca/~phil/exiftool/


4

Як було сказано в іншому запитанні , ви можете використовувати pngcheck :

pngcheck -c -v -t foobar.png

Це відповідні варіанти показу шматок 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. Використання Imagemagick для додавання коментаря:

    mogrify -comment "your comment" <IMAGE_NAME>
    
  2. Потім читаючи його назад:

    identify -verbose <IMAGE_NAME>
    

Або, якщо ви хочете бачити лише коментар:

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

Це хороша практика правильно вставити метадані.


Я використовував конвертувати, щоб досягти цього, щоб створити нову версію, але до цього часу я ще не став mogrify, дякую! convert filename.png -set comment "That rabbits dynamite!" filename.png;
roberthuttinger

ідентифікувати лише твори для відомих властивостей. Будь-які спеціальні теги не відображатимуться
TJR

1

Якщо хтось використовує Magick.NET , ви можете отримати ці атрибути в C #, як це:

foreach(string key in image.AttributeNames)
{
    string value = image.GetAttribute(key);
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.