15

こんにちは私はバイナリ配列をビットマップに変換し、画像をで表示したいと思いpictureboxます。次のコードを記述しましたが、パラメーターが無効であるという例外が発生しました。

  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;

    }
4

3 に答える 3

19

それは本当に何が入っているかに依存しblobます。有効なビットマップ形式(PNG、BMP、GIFなど)ですか?ビットマップ内のピクセルに関する生のバイト情報である場合、そのようにすることはできません。

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;
    }
}
于 2012-12-17T11:39:05.740 に答える
5

MemoryStreamを破棄しないでください。これで画像オブジェクトに属し、画像を破棄するときに破棄されます。

また、このようにすることを検討してください

var ms = new MemoryStream(blob);
var img = Image.FromStream(ms);
.....
img.Dispose(); //once you are done with the image.
于 2012-12-17T11:38:24.030 に答える
0
System.IO.MemoryStream mStrm = new System.IO.MemoryStream(your byte array);
Image im = Image.FromStream(mStrm);
im.Save("image.bmp");

これを試して。それでもエラーまたは例外が発生する場合。画像に変換しようとしているバイトを投稿してください。画像ストリームに問題があるはずです...。

于 2012-12-17T11:46:51.120 に答える