我有一个工作应用程序来更改我扫描图像的一些元数据。这工作得很好,直到我们添加了一个预处理来使用 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)