У меня есть изображения с людьми, помечающими информацию в формате xml. Я хочу отредактировать эту информацию, а также добавить ее к фотографиям, на которых ее еще нет. Глядя на xml, я предполагаю, что он основан на теги людей, используемые в компоненте обработки изображений Microsoft.
Я не совсем понял формат, но я понял это очень далеко, что я могу изменить или гемерировать xml, я просто не знаю, где его записать на изображении. Я, наверное, просто делаю какую-то глупую ошибку, потому что у меня нет опыта работы с этими метаданными изображений. Так что, если вы думаете, что я ошибаюсь и это можно сделать гораздо проще, пожалуйста, скажите мне.
В тех изображениях, которые уже содержат этот xml, я могу использовать поиск и замену для обновления xml. Однако у меня есть много изображений, которые еще не содержат этой информации, и я не знаю, куда мне ее записать внутри изображения.
Изображения, которые уже содержат эту информацию, можно прочитать с помощью exiftool следующим образом:
exiftool -xmp -b existingTags.JPG
В результате получился следующий xml:
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP
Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:MP="http://ns.microsoft.com/photo/1.2/" xmlns:MPRI="http://ns.microsoft.com/photo/1.2/t/RegionInfo#"
xmlns:MPReg="http://ns.microsoft.com/photo/1.2/t/Region#" xmp:Rating="0"> <dc:subject> <rdf:Bag> <rdf:li>Valeriya
</rdf:li> </rdf:Bag> </dc:subject> <MP:RegionInfo rdf:parseType="Resource"> <MPRI:Regions> <rdf:Bag> <rdf:li
MPReg:Rectangle="0.48, 0.418, 0.059333, 0.089" MPReg:PersonDisplayName="findus_l"/> </rdf:Bag> </MPRI:Regions>
</MP:RegionInfo> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="w"?>
Однако я не могу написать информацию с помощью exiftool. Когда я запустил эту команду, она просто снова считывает информацию, вместо того, чтобы записывать содержимое файла в изображение:
exiftool -xmp<=alteredXMP.txt existingTags.JPG
Небольшое исследование показало мне, что exiftool может писать только определенные теги xmp, и люди, помечающие теги из компонента создания образов Windows, не участвуют в этом.
Где в файле изображения я должен записать информацию? Можно как-нибудь программно найти это место, а потом просто вставить туда xml?
Я использую Kotlin в качестве языка программирования, но я не против вызова функций командной строки или других программ.
Предыстория: у меня есть Synology Diskstation, и я использую прилагаемое программное обеспечение под названием Photo Station. Фотостанция поддерживает пометку людей на изображениях и использует данный формат. Мне нравится фотостанция во многих отношениях, но распознавание лиц плохое, поэтому я хочу использовать свою собственную, но чтобы фотостанция могла ее читать.
<
, чтобы предотвратить перенаправление оболочки. Попробуйтеexiftool "-xmp<=alteredXMP.txt" existingTags.JPG
- person StarGeek   schedule 01.06.2020