Вот быстрый вопрос: как правильно добавить собственное пространство имен в XMP с помощью BitmapMetadata
?Добавление пользовательского пространства имен в метаданные (BitmapMetadata)
Скажем, я хочу, чтобы пространство имен выглядеть следующим образом: xmlns:MyNamespace="http://test"
не
Там нет четкого способа, как добавить пространство имен в BitmapMetadata
, поэтому я попытался это:
//I retrieve the image frame (Frame[0]), then:
var metadata = (BitmapMetadata) frame.Metadata.Clone();
//Covering all bases
metadata.SetQuery("/app1/ifd/PaddingSchema:Padding", 4096);
metadata.SetQuery("/app1/ifd/exif/PaddingSchema:Padding", 4096);
metadata.SetQuery("/xmp/PaddingSchema:Padding", 4096);
И теперь главный запрос Я попытался идти «очевидный путь»:
metadata.SetQuery("/xmp/MyNamespace:MyTag", "AwesomeTagValue");
и действительно, если я сохранить изображение, открыть его и запустить
var value = (string) metadata.GetQuery("/xmp/MyNamespace:MyTag");
оно возвращает правильное значение - AwesomeTagValue.
Вот проблема, однако, теги записываются в файл с неправильным пространством имен. я заглянул в файл и вот раздели XML/RDF вид:
<rdf:Description rdf:about="" xmlns:prefix0="MyNamespace"> ... </rdf:Description>
поэтому все теги начинаются с prefix0
, и я хотел бы, чтобы это было
<rdf:Description rdf:about="" xmlns:MyNamespace="http://test"> ... </rdf:Description>
Любые идеи, как это сделать что или если это возможно даже с BitmapMetadata
?
спасибо за решение, это сработало для меня, но я не могу установить что-то вроде \t \t \t \t \t \t \t \t \t \t \t \t <РДФ: литий XML: LANG = "х-умолчанию"> Очищенный для связанных телевизионной программы рекламы, включая печатные и онлайн для: - Телевидение - Запланированные линейные услуги \t \t \t \t \t \t \t xmpRights: UsageTerms> –