我对将图像保存到数据库的这种东西很陌生,甚至当我认为这是非常直截了当的时候,事实并非如此。我想要做的是从同一台计算机以任何格式读取图像文件,并将其显示在图片框中,然后将图像转换为字节以将其保存在数据库中。到目前为止,我可以在图片框中显示图像,但我无法将图像转换为字节。这是我的代码:无法将图像转换为字节[] C#
private void DisplayImage()
{
if (openFileDialog.ShowDialog(this) == DialogResult.OK)
{
try
{
Stream file;
if ((archivo = openFileDialog.OpenFile()) != null)
{
using (file)
{
pictureBox.Image = Image.FromStream(file);
}
}
}
catch (Exception ex)
{
...
}
}
}
这是一个简单的方法,只是在图片框中显示图像。真正的问题是用下面的方法:
public static byte[] ConvertImageToBytes(Image image)
{
if (image != null)
{
MemoryStream ms = new MemoryStream();
using (ms)
{
image.Save(ms, ImageFormat.Bmp);
byte[] bytes = ms.ToArray();
return bytes;
}
}
else
{
return null;
}
}
当它试图将图像保存到内存流,我得到的错误:
System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.
上发生了什么任何想法?
是错误总是发生,或者只是偶尔,或者使用时间长的申请后? – Chris 2010-01-29 05:16:28
你永远不会在第一个方法中分配'文件'变量......我认为这只是真实代码的一个提取?否则,编译器会抱怨在分配之前使用'文件'变量? – 2010-01-29 06:40:31