来自手动创建的字节[]的图像

时间:2013-08-09 10:37:16

标签: c# image bytearray memorystream

我想从我手动创建的byte[]创建一个图像,但是我得到一个JIT错误

System.ArgumentException: Parameter is not valid.
at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
   at CreateBitmapFromStream.Form1.Form1_Load(Object sender, EventArgs e) in c:\Data\C#-Workspace\CreateBitmapFromStream\CreateBitmapFromStream\Form1.cs:line 35
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
...

这是我的代码:

private void Form1_Load(object sender, EventArgs e)
{
  var data = new byte[20*10];
  for (int i = 0; i < data.Length; i++)
  {
    if (i < 100)
      data[i] = 0x15;
    else
      data[i] = 0x99;
  }

  using (var ms = new MemoryStream(data))
  {
    var img = Image.FromStream(ms, true, true);  
    panel1.BackgroundImage = img;
  }
}

我做错了什么?

2 个答案:

答案 0 :(得分:0)

根据特定格式构建图像。

这不仅仅是一系列像素。如果您想绘制像素,请使用Bitmap

提供的System.Drawing
Bitmap b = new Bitmap(1, 1);
b.SetPixel(0, 0, Color.Gray);

答案 1 :(得分:0)

如果要生成图像,则应使用BitmapData类。使用BitmapData,您可以将像素数据写入位图/图像。

这是一个例子: http://msdn.microsoft.com/en-us/library/system.drawing.imaging.bitmapdata.scan0.aspx