我需要在不修改图像内容的情况下将唯一 ID 插入到图像文件中——即它只是我想要修改的元数据。我从 JPEG 文件开始,因为有一个适当的 EXIF 属性可用:ImageUniqueID。
我将 C# 与 .NET Core 3.1 一起用于ImageSharp的这个练习。我可以使用以下代码使用 ImageSharp 更改 EXIF 数据(在没有现有记录检查的情况下显示简化等):
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 Core 方法或库。