谁能告诉我如何从 C# 中的 (DB) VarBinary(Max) 数据类型列构造图像。此外,我确实想更改其类型并将其保存到硬盘驱动器上的物理路径中。
很多人都发布了类似问题的答案,但我找不到符合我上述标准的合适答案。
任何人的帮助将不胜感激。
亲切的问候
谁能告诉我如何从 C# 中的 (DB) VarBinary(Max) 数据类型列构造图像。此外,我确实想更改其类型并将其保存到硬盘驱动器上的物理路径中。
很多人都发布了类似问题的答案,但我找不到符合我上述标准的合适答案。
任何人的帮助将不胜感激。
亲切的问候
首先将您的 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);
以下是我从 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+ 中发生一般错误”,请更改文件夹的权限或选择网络上具有读/写权限的位置。
亲切的问候