Вставка ImageUniqueID в данные EXIF ​​JPEG без изменения изображения с помощью. NET - PullRequest
0 голосов
/ 31 марта 2020

У меня есть требование вставлять уникальный идентификатор в файлы изображений без изменения содержимого изображения - ie это просто метаданные, которые я хочу изменить. Я начинаю с файлов JPEG, потому что доступно соответствующее свойство EXIF: ImageUniqueID .

Я использую C# с. NET Core 3.1 для этого упражнения с ImageSharp . Я могу изменить данные EXIF ​​с помощью ImageSharp, используя следующий код (показать упрощенное без существующих проверок записей и т. Д. c):

using (var image = Image.Load(filename))
            {
            var imageUniqueIdentifier = Guid.NewGuid().ToString().ToLower().Replace("-", "");
            image.Metadata.ExifProfile.SetValue(ExifTag.ImageUniqueID, imageUniqueIdentifier);

            var jpegEncoder = new JpegEncoder() { Quality = 100 };
            image.Save(filename, jpegEncoder);
            }

Я играл с настройкой качества в JpegEncoder, но все еще был получение либо неприемлемого снижения качества, либо увеличения размера файла.

Есть ли способ просто прочитать метаданные, изменить их и затем записать обратно, не затрагивая изображение вообще?

Я также посмотрел в MetadataExtractor. NET, но это не имеет возможности записи и с удовольствием рассмотрит другие. NET Основные методы или библиотеки.

...