Я пытался понять, как метаданные XMP работают с файлами PNG в течение последних нескольких часов, но не мог полностью осмыслить это.
Если я создаю изображение PNG в Photoshop, сохраняю его и открываю диалоговое окно «Информация о файле» («Файл»> «Информация о файле» или Ctrl + Alt + Shift + I), я могу увидеть некоторые свойства XMP, такие как CreateDate
, CreatorTool
или ModifyDate
.
Теперь, если я попытаюсь открыть файл с помощью exiv2 и прочитать метаданные, похоже, что ничего не найду:
auto image = Exiv2::ImageFactory::open(imagePath);
image->readMetadata();
Exiv2::XmpData &xmpData = image->xmpData();
То же самое с exiftool -xmp:all myImage.png
, exiv2 -P X myImage.png
или даже GIMP (но я думаю, что это с внутренним использованием exiv2).
Это не было бы такой проблемой, если бы любые добавленные метаданные не были удалены при повторном сохранении в Photoshop. Если это было непонятно, открыв изображение и добавив метаданные XMP с помощью exiv2, сохранив его, снова открыв изображение в Photoshop и в диалоговом окне информации о файле, свойства, добавленные ранее, больше не существуют.
Странно то, что если вы выполните весь этот процесс с изображением JPEG, все будет работать так, как ожидалось: все свойства видны как из Photoshop, так и из exiv2, и если я попытаюсь добавить метаданные с помощью exiv2 (используя тот же код), они появятся в Photoshop тоже.
Я упускаю что-то очевидное? Есть ли в PNG что-то особенное, что не подходит для JPEG? Я не пробовал использовать Adobe SDK для редактирования данных XMP, есть ли в нем какие-либо лучше?
Любая помощь будет очень признательна, так как это начинает сводить меня с ума: /
Изменить: прочитав этот пост, я попробовал использовать Adobe Bridge, и, похоже, он не отображает те же свойства, что и Photoshop. Если я добавляю метаданные XMP с помощью Exiv2, они отображаются в Bridge, но если я изменяю изображение в Photoshop, метаданные снова исчезают из Bridge.