Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#WPF图像加载和保存_C#_Wpf - Fatal编程技术网

C#WPF图像加载和保存

C#WPF图像加载和保存,c#,wpf,C#,Wpf,我一直在尝试在位图图像类中加载我的图像。但每当我试图保存图像时(使用第三方库,称为图像处理器),质量就会下降。所以我的问题是: 有什么方法可以保存图像的完整质量 src.BeginInit(); src.UriSource = new Uri("picture.jpg", UriKind.Relative); src.CacheOption = BitmapCacheOption.OnLoad; src.EndInit(); 工作非常好,我经常在我的应用程序中使用这个类。它有许多很好的

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

有什么方法可以保存图像的完整质量

src.BeginInit();

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

src.CacheOption = BitmapCacheOption.OnLoad;

src.EndInit(); 
工作非常好,我经常在我的应用程序中使用这个类。它有许多很好的内置功能,例如,在调整图像大小时保存比例:

 WebImage wi = new WebImage(imageName);
 wi.Resize(314, 235, true);
 wi.Save(imageName, "png");

您可以在没有任何第三方库的情况下实现图像保存。但您应该知道,保存JPEG总是会降低质量—这是该格式的本质,而不是库的问题。使用
JpegBitmapEncoder
可以配置质量,如果使用最大值,您将不会看到图片降级,但无论如何它都会出现。因此,考虑使用PNG格式代替.< /P> 以下是如何加载和保存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);
}

据我所知,jpg是一种有损格式。这种格式的每次保存都会降低图像质量。尝试对PNG执行同样的操作,看看这是否也会产生相同的问题,或者使用JpegBitmapEncoder并将其
QualityLevel
属性设置为100。