在不丢失EXIF数据的情况下使用.NET调整图像大小的最佳方法是什么?我可以使用.NET 2 System.Drawing。*类,WPF类或开源库。使用.NET调整图像大小而不会丢失EXIF数据
我发现现在处理这一切的唯一简单方法是使用Graphics.FromImage(.NET 2)来执行调整大小,并手动重新编写EXS数据(使用OpenSource库)(每段数据逐个)。
在不丢失EXIF数据的情况下使用.NET调整图像大小的最佳方法是什么?我可以使用.NET 2 System.Drawing。*类,WPF类或开源库。使用.NET调整图像大小而不会丢失EXIF数据
我发现现在处理这一切的唯一简单方法是使用Graphics.FromImage(.NET 2)来执行调整大小,并手动重新编写EXS数据(使用OpenSource库)(每段数据逐个)。
您在调整大小之前提取EXIF数据然后重新插入EXIF数据的建议似乎是一个不错的解决方案。
EXIF数据只能定义为JPEG和TIFF格式 - 当您将这样的图像加载到Graphics对象中进行大小调整时,实质上是将图像转换为常规位图。因此,你失去了EXIF数据。
关于使用C#提取EXIF的略有相关的线程#here。
好吧,我然后保持我的解决方案,它工作得很好,它只是很多代码,只是速度不够:) – TigrouMeow 2009-08-05 14:52:05
我用Magick .NET和创建2种扩展方法:
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;
}
我加了CodePlex上的一个项目,具有调整大小,而不会丢失EXIF数据:http://tidytinypics.codeplex.com/ – TigrouMeow 2009-12-11 01:10:25