У меня есть рабочее приложение для изменения некоторых метаданных отсканированных изображений. Это работало хорошо, пока мы не добавили предварительную обработку для автоматического кадрирования границ изображений с помощью консоли 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)
Пример проекта