我有一个 byte[] 数组,其中包含图像的 bgra 字节,我从中生成一个 BitmapSource,如下所示:
BitmapSource bmsOut = BitmapSource.Create(
iPixelWidth, iPixelHeight, 96, 96, PixelFormats.Bgra32, null, bytOutput, iStride);
这在 wpf Image 元素上显示良好。但是,当我尝试从 BitmapSource 创建文件时:
private void mtdSave(BitmapSource bitmapSource, string path, BitmapEncoder encoder)
{
using (var stream = new FileStream(path, FileMode.Create))
{
encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
encoder.Save(stream);
}
}
根据使用的编码器,我得到了奇怪的输出:bmp 在一片黑色的海洋中提供了一点,也许是 10x10 像素的图像中心图像,png 在没有黑色的情况下也是如此。显示区域看起来好像图片已被缩略图轮廓裁剪(仅用于描述视觉效果)此外,如果您随后在 Paint 中打开 png,则整个图片都在那里并显示,但不适用于 bmp 版本(Irfanview 不能处理任何一个文件)
到底是怎么回事?我错过了什么?