gpt4 book ai didi

c# - 如何将图像 byte[] 数组压缩为 JPEG/PNG 并返回 ImageSource 对象

转载 作者:行者123 更新时间:2023-11-30 16:16:15 25 4
gpt4 key购买 nike

我有一个图像(以 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;
}
}

关于c# - 如何将图像 byte[] 数组压缩为 JPEG/PNG 并返回 ImageSource 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18609757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com