嗨,我想把二进制数组转换成位图并在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;

    }

最佳答案

这实际上取决于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;
    }
}

10-04 12:03