使用内存流将二进制转换为位图
嗨我想将二进制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资源创建位图。