Создание/запись данных EXIF ​​с помощью Magick.NET

Использование библиотеки Magick.NET на основе ImageMagick в C# для добавления метаданных EXIF ​​в обработанный файл JPEG, который в настоящее время не имеет профиля EXIF. Все попытки создать профиль не увенчались успехом:

 var newExifProfile = image.GetExifProfile();
 if (newExifProfile == null)
 {
    newExifProfile = new ExifProfile();
 }
 newExifProfile.SetValue(ExifTag.Copyright, "test");

ExifProfile имеет другие конструкторы, которые принимают поток или массив байтов, не обеспечивая создание исключения всякий раз, когда вызывается .SetValue():

Object reference not set to an instance of an object.
at ImageMagick.ExifReader.GetBytes(UInt32 length)
at ImageMagick.ExifReader.Read(Byte[] data)
at ImageMagick.ExifProfile.SetValue(ExifTag tag, Object value)

Как можно использовать Magick.NET для записи данных EXIF?


person simbolo    schedule 23.07.2014    source источник


Ответы (1)


Вы обнаружили ошибку в Magick.NET, и она была исправлена ​​(https://magick.codeplex.com/workitem/1272). В следующем выпуске Magick.NET (6.8.9.601) вы сможете сделать это:

using (MagickImage image = new MagickImage("logo:"))
{
  profile = new ExifProfile();
  profile.SetValue(ExifTag.Copyright, "Dirk Lemstra");

  image.AddProfile(profile);

  image.Write("logo.withexif.jpg");
}
person dlemstra    schedule 24.07.2014
comment
Привет, связанный с этим вопрос — есть ли способ использовать больше настраиваемых полей IPTC (числа от # 220 до # 240) с Magick.NET? Добавление профиля, по-видимому, удаляет все ранее существовавшие записи IPTC выше # 220, а агентства печати часто используют более 20 настраиваемых полей IPTC. Будет ли это работать, если я вручную отформатирую профиль на уровне ByteArray? - person yosh; 06.12.2016
comment
Вы можете начать обсуждение здесь: magick.codeplex.com/discussions или здесь: github.com/dlemstra/Magick.NET/issues? У меня есть еще несколько вопросов. А можно пример создать в своем сообщении? - person dlemstra; 06.12.2016