【发布时间】:2009-11-06 10:54:05
【问题描述】:
我想知道拍摄所选图像、调整大小并保存它的最佳方法是什么。据我所知,WPF 在调整图像大小时会破坏图像质量。这是真的吗,如果是的话,我应该用什么方法来尝试这个任务?
谢谢,科汉。
【问题讨论】:
我想知道拍摄所选图像、调整大小并保存它的最佳方法是什么。据我所知,WPF 在调整图像大小时会破坏图像质量。这是真的吗,如果是的话,我应该用什么方法来尝试这个任务?
谢谢,科汉。
【问题讨论】:
WPF 旨在能够实时调整图像大小以进行显示(使用显卡加速),因此它偏向于速度而不是质量。
如果您想获得不错的质量,您应该使用System.Drawing.Bitmap 来调整大小:
System.Drawing.Bitmap resizedImage;
using(System.Drawing.Image originalImage = System.Drawing.Image.FromFile(filePath))
resizedImage = new System.Drawing.Bitmap(originalImage, newSize);
// Save resized picture
resizedImage.Save(resizedFilePath, System.Drawing.Imaging.ImageFormat.Jpeg);
resizedImage.Dispose();
质量仍然不会很好 - JPEG 是一种有损图像格式,加载和保存以及Bitmap 类的粗略缩放都会丢失保真度。如果质量必须尽可能高,那么您应该考虑使用像 DevIL 这样的图像库,它可以更好地生成平滑调整大小的图像。
【讨论】:
您不必恢复到 GDI+ 来缩放位图。 WPF 本身具有您需要的所有 API。质量一样:http://social.msdn.microsoft.com/forums/en-US/wpf/thread/580fca03-d15b-48b2-9fb3-2e6fec8a2c68/
图像处理在 WPF 中非常强大,而且比 GDI+ 更快。
【讨论】:
如果您只想调整大小然后保存图像,我看不出这与 WPF 有什么关系。您可以只使用 .NET 中的图像处理功能。示例见this link。
【讨论】: