我一直在尝试在位图图像类中加载我的图像。但每当我尝试保存图像时(使用名为Image Processor的第三方库)质量下降。所以我的问题是:
有什么方法可以保存完整品质的图像吗?
src.BeginInit();
src.UriSource = new Uri("picture.jpg", UriKind.Relative);
src.CacheOption = BitmapCacheOption.OnLoad;
src.EndInit();
答案 0 :(得分:2)
您可以在没有任何第三方库的情况下实现图像保存。但你应该知道,保存JPEG总是会降低质量 - 这是该格式的本质,而不是库的问题。使用JpegBitmapEncoder
您可以配置质量,并且使用最大值,您将看不到图片质量下降,但无论如何它都存在。因此,请考虑使用PNG格式。
以下是如何加载和保存JPEG图像的简短代码段:
// Load from file or any other source.
var uri = new Uri(@"D:\InputImage.jpg");
var bitmap = new BitmapImage(uri);
// Save to file.
var encoder = new JpegBitmapEncoder(); // Or any other, e.g. PngBitmapEncoder for PNG.
encoder.Frames.Add(BitmapFrame.Create(bitmap));
encoder.QualityLevel = 100; // Set quality level 1-100.
using (var stream = new FileStream(@"D:\OutputImage.jpg", FileMode.Create))
{
encoder.Save(stream);
}
答案 1 :(得分:0)
WebImage效果非常好,我经常在我的应用程序中使用这个类。它有许多不错的内置功能,例如,在调整图像大小时节省了比例:
WebImage wi = new WebImage(imageName);
wi.Resize(314, 235, true);
wi.Save(imageName, "png");