请教一个C#中将byte[]数组转换为Image的问题

2025-02-24 15:51:52
推荐回答(4个)
回答1:

Image是一个抽象类,不能直接作为实例化使用。
FromStream输入的内容必须是图片文件jpg,bmp的数据,而不是rgb数据
应该用Image的子类Bitmap,
byte[] rgb = new byte[153600];//原RGB字节数据
Bitmap img = new Bitmap(320, 240, PixelFormat.Format24bppRgb);
//锁定内存数据
BitmapData data=img.LockBits(
new Rectangle(0,0,img.Width,img.Height),
ImageLockMode.WriteOnly,
PixelFormat.Format24bppRgb);
//输入颜色数据
System.Runtime.InteropServices.Marshal.Copy(rgb, 0, data.Scan0, rgb.Length);
img.UnlockBits(data);//解锁
g.DrawImage(img);//绘制在Graphics上面

回答2:

和我遇到的问题一样。转码问题。
public static string ToStringNow(object obj)
{
StringBuilder sb = new StringBuilder();
byte[] byte1 = (byte[])obj;
for (int i = 0; i < byte1.Length; i++)
{
char p;
p = (char)byte1[i];
sb.Append(p);
}
return sb.ToString();
}
这个是转码的方法
string path = ToStringNow(this.dataGridView1[2, i].Value);
this.dataGridView1[2, i].Value = Image.FromFile(path);
在dataGridView中第三列显示。

回答3:

MemoryStream ms = new MemoryStream(b);
Bitmap bm = new Bitmap(ms);
return bm
试一下这个呢。

回答4:

public Image ByteArrayToImage(byte[] b)
{
MemoryStream ms = new MemoryStream(b);
System.Drawing.Bitmap image = new Bitmap(ms);
return image;
}