0

我试图将二进制数据转换为图像。这是我的代码:

 Byte[] bytes = (byte[])(reader["Avatar"]);
 fs1.Write(bytes, 0, bytes.Length);
 pictureBox1.Image = Image.FromFile("image.jpg");
 pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
 pictureBox1.Refresh();

但错误是行中的内存溢出异常:“pictureBox1.Image = Image.FromFile("image.jpg");" 我不知道为什么会这样,请帮助我

4

3 回答 3

2

如果 fs1 是一个流,您可能应该在下一行访问该文件之前关闭它。请注意,您也可以在内存中创建映像并完全避免使用文件系统。

于 2012-07-12T07:36:44.977 回答
2

试试这个方法:

    public Image ImageFromBytes(byte[] bytes)
    {
        using(var ms = new MemoryStream(bytes))
        {
          return Image.FromStream(ms);
        }
    }
于 2012-07-12T07:39:15.923 回答
0

你桅杆CloseDispose你的流:

fs1.Write(bytes, 0, bytes.Length);
//Make sure you closed your stream
fs1.Close();
// You should call Dispose too.
fs1.Dispose();
pictureBox1.Image = Image.FromFile("image.jpg");

或将您的写入文件过程包含在using块中:

using (Stream fs1 ...)
{
    ...
    fs1.Write(bytes, 0, bytes.Length);
}  
于 2012-07-12T07:39:19.313 回答