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 に答える