CodeGo.net>如何将图像字节[]数组压缩为JPEG / PNG并返回ImageSource对象
作者:互联网
我有一个图像(以byte []数组的形式),我想获得它的压缩版本. PNG或JPEG压缩版本.
我现在使用以下代码:
private Media.ImageSource GetImage(byte[] imageData, System.Windows.Media.PixelFormat format, int width = 640, int height = 480)
{
return System.Windows.Media.Imaging.BitmapSource.Create(width, height, 96, 96, format, null, imageData, width * format.BitsPerPixel / 8);
}
如何扩展它,以便可以压缩并返回图像源的压缩版本(质量下降).
提前致谢!
解决方法:
使用像PngBitMapEncoder这样的正确编码器应该可以:
private ImageSource GetImage(byte[] imageData, System.Windows.Media.PixelFormat format, int width = 640, int height = 480)
{
using (MemoryStream memoryStream = new MemoryStream())
{
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Interlace = PngInterlaceOption.On;
encoder.Frames.Add(BitmapFrame.Create(BitmapSource.Create(width, height, 96, 96, format, null, imageData, width * format.BitsPerPixel / 8)));
encoder.Save(memoryStream);
BitmapImage imageSource = new BitmapImage();
imageSource.BeginInit();
imageSource.StreamSource = memoryStream;
imageSource.EndInit();
return imageSource;
}
}
标签:imagesource,image,wpf,c,bytearray 来源: https://codeday.me/bug/20191122/2062715.html