使用.NET调整图像大小的最佳方法是什么,而不会丢失EXIF数据?我可以使用.NET 2 System.Drawing。*类,WPF类或开源库。
我发现现在处理这一切的唯一简单方法是使用Graphics.FromImage(.NET 2)执行调整大小并手动重写EXIF数据和一个OpenSource库(每个数据一个一个)。
答案 0 :(得分:3)
您建议在调整大小之前提取EXIF数据,然后重新插入EXIF数据似乎是一个不错的解决方案。
EXIF数据只能为JPEG和TIFF等格式定义 - 当您将这样的图像加载到Graphics对象中进行大小调整时,您实际上是将图像转换为常规位图。因此,您丢失了EXIF数据。
使用C#here进行EXIF提取的相关主题。
答案 1 :(得分:2)
我使用了Magick .NET并创建了两种扩展方法:
public static byte[] ToByteArray(this Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
}
public static Image AttachMetadData(this Image imgModified, Image imgOriginal)
{
using (MagickImage imgMeta = new MagickImage(imgOriginal.ToByteArray()))
using (MagickImage imgModi = new MagickImage(imgModified.ToByteArray()))
{
foreach (var profileName in imgMeta.ProfileNames)
{
imgModi.AddProfile(imgMeta.GetProfile(profileName));
}
imgModified = imgModi.ToImage();
}
return imgModified;
}