【发布时间】:2019-10-30 20:58:15
【问题描述】:
我有一个工作应用程序来更改我扫描图像的一些元数据。这工作得很好,直到我们添加了一个预处理来使用 GIMP 控制台自动裁剪图像的边框。
我们更改了 EXIF 数据中的多个字段,但仍然可以正常工作。 但是,如果我想更改任何 IPTC 字段,我会收到错误消息“属性已损坏。”
对于未裁剪的图像,我可以毫无问题地更改 EXIF 和 IPTC。 对于裁剪的图像,我可以毫无问题地更改 EXIF。如果我更改 IPTC 信息中的任何内容,我会遇到异常。
我做错了吗?或者是否有其他关于如何更改图像的 EXIF/IPTC 数据的解决方案?
正如在其他帖子中发现的那样,我从图像中提取了 BitmapMetadata。我克隆它,可以编辑。 之后我添加填充以添加额外信息。
据我所知,元数据看起来没什么问题。在 IrfanView 或 EXIFTool 等其他工具中,我可以正确更改 IPTC 标题。
我创建了一个显示问题的测试项目。包含裁剪前后的示例图像。
If isJpg Then
oMetaData.SetQuery("/app13/{ushort=0}/{ulonglong=61857348781060}/iptc/{str=Headline}", "TEST_HEADLINE")
Else
oMetaData.SetQuery("/ifd/{ushort=33723}/{str=Headline}", "TEST_HEADLINE")
End If
System.ArgumentException:属性已损坏。 ---> System.Runtime.InteropServices.COMException:位图属性大小无效。 (HRESULT 异常:0x88982F42)
【问题讨论】: