C#WPF图像加载和保存

时间:2015-12-05 18:16:49

标签: c# wpf

我一直在尝试在位图图像类中加载我的图像。但每当我尝试保存图像时(使用名为Image Processor的第三方库)质量下降。所以我的问题是:

有什么方法可以保存完整品质的图像吗?

src.BeginInit();

src.UriSource = new Uri("picture.jpg", UriKind.Relative);

src.CacheOption = BitmapCacheOption.OnLoad;

src.EndInit(); 

2 个答案:

答案 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");