Adobe XMP SDK项目应用
时下随着科技的发展,航拍很是流行,对于繁多图像的建模,大疆智图(DJI Terra)软件算是行业中的佼佼者了。图像数据信息中自带XMP信息,建立模型后,图像就能自动定位显示出来了。可是有时候XMP信息存在于附加中间中,并没有附加在图像的数据信息中,于是我们可以通过Adobe XMP ToolKit开发包将XMP信息写入到文件中去。完整的XMP信息大致是这样的:
samples中的ModifyingXMP.cpp的代码已经教会了我们怎么讲XMP信息写入到图像文件中去,在这里我就不重点介绍了。写入以后会发现,图像在
中始终加载失败,经过一天时间不断的测试对比发现,是属性值rdf:about=""为空造成的,怎么样修改这个值呢,代码其实非常简单:
meta.SetObjectName("DJI Meta Data");
加上这行代码,图像就能够被软件成功加载了。一天的辛苦工作,只为了寻找这1行代码,个中滋味真是......。这期间有过放弃XMPCore的想法,试图采用IWIC接口来实现XMP信息的读取和写入,虽然也能实现XMP信息的写入(同时也支持IFD等等所有图像的读取和写入,这一点比XMPCore完善太多了),但是结局也是非常糟糕,不能设置rdf:about的属性值,且没有源码,只能中途放弃,重新又回归XMPCore上面来了。
上面提到IWIC可以很轻易的修改IFD里面的信息,那么XMPCore是否也支持这种功能呢?带着这个问题,我重新阅读XMPCore的代码,发现底层在TIFF_Manager里面已经实现了对图像的各项信息的修改SetTag和读取GetTag,但是在XMPFiles里面并没有将这些接口开放到应用层中开,比较这套接口的核心重点是实现XMP信息的读取和写入。并且如果是修改IFD信息,除了IWIC接口还有GDI+、libExif、Exiv2等等,它们都可以很轻易的实现这些功能。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
