使用image.fromstream方法从字节[]转换为图像



我尝试从数据库中转换为BYTE []的数据库中的图像数据,然后使用Image.FileStream在图像中转换为图像,并且我将获得"无效的参数错误"。拜托,有人可以帮我吗?

我尝试使用各种方法在代码上工作,最后一种在我的代码中。

byte[] data = validaccount.FingerPrint;
try
{
    using (MemoryStream strm = new MemoryStream())
    {
        strm.Write(data, 0, data.Length);
        strm.Position = 0;
        System.Drawing.Image img = System.Drawing.Image.FromStream(strm);
        BitmapImage bi = new BitmapImage();
        bi.BeginInit();
        MemoryStream ms = new MemoryStream();
        img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
        ms.Seek(0, SeekOrigin.Begin);
        bi.StreamSource = ms;
        bi.EndInit();
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

代码应该将byte[]转换为图像。

根据文档,image.fromstream(stream(如果"流不具有有效的映像格式",则将引发参数异常。您是否验证了数据实际上是正确的?如果是这样,它是什么类型的图像?

您正在滥用流。您只需要1个内存流,它具有一个字节数组的构造函数(无需自己编写字节(。确保将其包裹在使用块中(就像您为第一个流一样(。

您可能不想使用bitmapimage- xaml/wpf应用程序。您可能需要System.Drawing.BitMap继承/扩展System.Drawing.image。此外,位图具有一个构造函数,该构造函数采用流 - 无需从流中使用。

最后,图像(因此,由于位图继承了图像(实现了可置的功能,因此您还应该将其包装在使用块中。

P.S。这是一个重复的问题。

尽管它不是内存流,但此方法对我有用,如果您浏览了您的问题,则有时MS不起作用。

using System.Drawing;
var converterdImage = (Bitmap)((new ImageConverter()).ConvertFrom(byteArray));

字节数组到图像转换

最新更新