0

谁能告诉我如何从 C# 中的 (DB) VarBinary(Max) 数据类型列构造图像。此外,我确实想更改其类型并将其保存到硬盘驱动器上的物理路径中。

很多人都发布了类似问题的答案,但我找不到符合我上述标准的合适答案。

任何人的帮助将不胜感激。

亲切的问候

4

2 回答 2

1

首先将您的 byte[] 转换为位图:

    // Turn the binary into an image
    TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
    Bitmap myImage = (Bitmap)tc.ConvertFrom(imagedata );

然后保存到磁盘:

     myImage.save("file.png", ImageFormat.Png);

任何问题让我知道,这对我有用。

编辑:您需要使用 System.ComponentModel; 在顶部。

Edit2:如果出现 GDI 错误,请将位图复制到新位图:

Bitmap bm = new Bitmap(myImage);
myImage.Dispose();
myImage = null;
bm.save("file.png", ImageFormat.Png);
于 2013-09-05T15:44:25.243 回答
0

以下是我从 Byte[] 构造图像并将其数据类型更改为不同格式的答案。

            byte[] imagedata = dt.Rows[0]["Data"] as byte[];


        System.Drawing.Image newImage;
        if (imagedata != null)
        {
            using (MemoryStream stream = new MemoryStream(imagedata))
            {
                newImage = System.Drawing.Image.FromStream(stream);
                newImage.Save("C:\\Users\\User\\Documents\\TestPictureConversion\\WebApplication2\\WebApplication2\\Images\\Test Image.png");
            }
        }

因为我已经更改了应用程序中图像文件夹的路径,现在它不再产生“GDI+ 中发生一般错误”错误。为避免出现“GDI+ 中发生一般错误”,请更改文件夹的权限或选择网络上具有读/写权限的位置。

亲切的问候

于 2013-09-06T09:09:43.783 回答