我有一个带有图像的bgra字节的byte []数组,我从中生成一个像这样的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不能处理任何一个文件)
发生了什么事?我错过了什么?
答案 0 :(得分:1)
你传入了什么样的BitmapEncoder?你尝试过PngBitmapEncoder吗?