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


54

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

Но какое другое графическое программное обеспечение я могу использовать для считывания метаданных png?

Обратите внимание, что я ищу графические программы для распространенных платформ, поэтому, пожалуйста, укажите, подходит ли ваше приложение для Windows или Linux.

Чтобы прояснить вопрос, я прикрепил img с некоторыми тестовыми метаданными.

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
Рад помочь. ImageMagickSuite может сделать гораздо больше, стоит потратить некоторое время с ним на IMO.
cYrus

К вашему сведению: это не будет определять анимированные файлы PNG по состоянию на ноябрь 2017 года, вам нужно искать ACTL и т. Д., Используя pngcheck или что-то ...
Mike Q

Однако обратите внимание , что некоторые из этих полей не актуальны присутствуют дополнительные метаданные в данных файла: date:createи date:modifyпросто возвращает метаданные файловой системы, и signatureвычисляет хэш данных изображения.
Сиро Сантилли 新疆 15: 中心 法轮功 六四 事件

15

Другой вариант - TweakPNG в Windows.

Я вижу, что возникают проблемы с отображением Hans Müllerимени на вашем изображении, поэтому, возможно, оно не работает с метаданными Unicode.

TweakPNG


1
Я добавил строку с ü, так как это казалось хорошей идеей.
Йохан

2
К вашему сведению, TweakPNG хорошо работает внутри Wine .
Денилсон Са Майя

отличное приложение, приятное и простое
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.