使用内存流将二进制转换为位图

嗨我想将二进制arrey转换为位图并在图片框中显示图像我写下面的代码,但我得到例外,它说参数无效。

public static Bitmap ByteToImage(byte[] blob) { MemoryStream mStream = new MemoryStream(); byte[] pData = blob; mStream.Write(pData, 0, Convert.ToInt32(pData.Length)); Bitmap bm = new Bitmap(mStream); mStream.Dispose(); return bm; } 

这真的取决于blob 。 它是一种有效的位图格式(如PNG,BMP,GIF等?)。 如果它是关于位图中像素的原始字节信息,则不能这样做。

在行Bitmap bm = new Bitmap(mStream);之前使用mStream.Seek(0, SeekOrigin.Begin)mStream.Seek(0, SeekOrigin.Begin)开头可能会有所帮助Bitmap bm = new Bitmap(mStream);

 public static Bitmap ByteToImage(byte[] blob) { using (MemoryStream mStream = new MemoryStream()) { mStream.Write(blob, 0, blob.Length); mStream.Seek(0, SeekOrigin.Begin); Bitmap bm = new Bitmap(mStream); return bm; } } 

不要丢弃MemoryStream。 它现在属于图像对象,在处理图像时将被处理。

也考虑这样做

 var ms = new MemoryStream(blob); var img = Image.FromStream(ms); ..... img.Dispose(); //once you are done with the image. 
 System.IO.MemoryStream mStrm = new System.IO.MemoryStream(your byte array); Image im = Image.FromStream(mStrm); im.Save("image.bmp"); 

试试这个。 如果您仍然收到任何错误或exception; 请发布您尝试转换为图片的字节。 你的图像流应该有问题….

我不确定这些代码是否适合您,但您可以按照这样的说明操作;

 byte[] pData = blob; MemoryStream ms = new MemoryStream(pData); return Bitmap.FromResource(ms); 

来自MSDN的Bitmap.FromResource ;

从指定的Windows资源创建位图。