Я использую библиотеку для чтения значений exif Magick.NET. Для максимальной производительности я использую метод Ping
(см. this), потому что для работы с некоторыми метаданными изображения мне не требуется фактическое изображение.Добавить значение тега к существующему профилю exif на изображении
Но теперь мне нужно написать значение тега exif, если это значение не существует. То, что я пытаюсь сделать:
public static void Test()
{
var path = @"C:\image.jpg";
using (var image = new MagickImage())
{
image.Ping(path);
var profile = image.GetExifProfile();
var copyright = profile.Values.FirstOrDefault(x => x.Tag == ExifTag.Copyright);
if (copyright != null)
{
Trace.WriteLine("Copyright: " + copyright);
}
else
{
Trace.WriteLine("Write Copyright data");
profile.SetValue(ExifTag.Copyright, "Example text");
image.AddProfile(profile, true);
image.Write(path);
}
}
}
Но этот код не писать значение тега EXIF. Я могу успешно записать значение тега при открытии файла другого способа (как в этом answer):
var path = @"C:\image.jpg";
// Read image with content
using (var image = new MagickImage(path))
{
// image.Ping(path) - no more need
var profile = image.GetExifProfile();
...
}
Но все это содержанию изображения расшифровывает , мне не нужно это для изменения значений тегов «контент-независимого» например Copyright или ДатаTimeDigitized.
Вопрос заключается в том: как редактировать это теги EXIF без загрузки всего содержания изображения?
И мне нужно переписать весь профиль exif (image.AddProfile(profile, true)
) или есть какой-то способ просто отредактировать профиль?
Я подозревал что-то вроде этого, но спасибо за подтверждение информации. После получения информации о спецификациях JPEG я пришел к выводу, что определенно лучше использовать конкретный, хорошо поддерживаемый инструмент, а не ручное вмешательство в jpeg с возможными неожиданными последствиями :) Последний вопрос: если это технически возможно - каковы шансы, что в один прекрасный день мы увидим как «exif редактировать без загрузки контента» в Magick.NET? – Sam
Я обновил ответ, чтобы ответить на этот вопрос. – dlemstra
Ну, эта функция кажется не так просто реализовать, как я думал, поэтому мы найдем другой способ ускорить редактирование exif. Но мы будем рады видеть эту функцию в будущем :) В любом случае, спасибо за ответы и за Magick.NET вообще! – Sam