从字节数组创建位图图像



如何从字节数组创建位图图像对象。这是我的代码:

System.Windows.Media.Imaging.BitmapImage image = new 
System.Windows.Media.Imaging.BitmapImage();
byte[] data = new byte[10] { 1, 0, 0, 1, 1, 1, 0, 0, 1, 0 };
using (var ms = new System.IO.MemoryStream(data))
{
image.BeginInit();
image.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad;
image.StreamSource = ms;
image.EndInit();
}

运行 EndInit(( 命令时,我遇到了以下异常。

No imaging component suitable to complete this operation was found.

我希望这些线条应该创建一个尺寸为 1x10 像素的图像,包含两种颜色。

我做错了什么?例外是什么意思?

提前感谢!

创建位图图像时,将根据图像的编码(位图图像和编码(从源加载图像。 C# 支持的位图有许多不同的编码。

您看到的错误可能是因为 BitmapImage 类找不到从字节数组到支持的编码的合适转换。 (从编码中可以看出,许多是 4 或 8 的倍数,而 10 不是(。

我建议创建一个字节数组,其中包含正确的编码内容,以实现您想要的结果。 例如,Rbg24 格式每个像素将有三个字节的数据。

我认为你需要使用SetPixel((

byte[] data = new byte[10] { 1, 0, 0, 1, 1, 1, 0, 0, 1, 0 };
Bitmap bmp = new Bitmap(1, 10);
for (int i = 0; i < data.Length; i++)
{
bmp.SetPixel(0, i, data[i] == 1 ? Color.Black : Color.White);
}
bmp.Save("file_path");

最新更新