Създаване/Записване на EXIF ​​данни с помощта на Magick.NET

Използване на базирана на ImageMagick библиотека Magick.NET в 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