C# 将字节数组转换为图像时,参数无效
我想在access数据库中保存图像,我使用了OLE对象 其思想是将图像转换为字节数组,然后将字节数组添加到数据库中 这就是功能:C# 将字节数组转换为图像时,参数无效,c#,arrays,image,byte,C#,Arrays,Image,Byte,我想在access数据库中保存图像,我使用了OLE对象 其思想是将图像转换为字节数组,然后将字节数组添加到数据库中 这就是功能: public static byte[] ImageToByte(Image img) { ImageConverter converter = new ImageConverter(); return (byte[])converter.ConvertTo(img, typeof(byte[])); } 这个
public static byte[] ImageToByte(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}
这个很好用
当我想将字节数组返回到映像时,我得到一个异常:
参数异常未处理
参数无效
我尝试了两个函数将字节数组转换为图像:
public static Image ImageFromByte(byte[] image)
{
ImageConverter ic = new ImageConverter();
Image img = (Image)ic.ConvertFrom(image);//here the exception comes
return img;
}
或:
问题是什么,如何解决?尝试将映像保存到磁盘,看看是否有效。根据需要更改文件名和扩展名 大致如下:
string path = @"c:\myimage.jpg";
using (MemoryStream inputStream = new MemoryStream(byteArrayIn))
{
using (Stream file = File.Create(path))
{
byte[] buffer = new byte[8 * 1024];
int len;
while ((len = inputStream.Read(buffer, 0, buffer.Length)) > 0)
{
file.Write(buffer, 0, len);
}
}
}
编辑:将图像写入磁盘工作,我想你可以看到图像。试试这个:
using (MemoryStream inputStream = new MemoryStream(byteArrayIn))
{
using (var image = Image.FromStream(inputStream))
{
// see if this works.
// handle the image as you wish, return it, process it or something else.
}
}
首先,您是如何将其放入数据库的?我编辑了这个问题,请参见。如果您为代码编写了一个测试,并使用一些有效的位图(例如,一个文件或您刚刚绘制的位图)对其进行测试,那么您将更好地了解问题所在。我可以想出一些方法将其放入数据库或从数据库中取出,这些方法都可能会失败。在您的编辑中没有嗅探到数据库。如果您将流写入磁盘,那么图像是否可以查看?我怀疑图像在此过程中丢失了一些内容,因此它不是图像类的有效格式。你在处理什么文件类型?@KaramNajjar-只需执行
返回图像代码>你应该很乐意去做,还是做得更好?在这行:::使用(var image=image.FromStream(inputStream))异常出现了,很抱歉,我不是说它适合我的目的(第二个代码,但第一个代码很好),但是出现了完全相同的异常!!!谢谢你的回复:)我是处理字节数组的新手,我不理解这个错误,我的问题是如何在数据库中保存图像,还有其他方法吗?将图像保存到磁盘?:-)那是我通常做的事。
using (MemoryStream inputStream = new MemoryStream(byteArrayIn))
{
using (var image = Image.FromStream(inputStream))
{
// see if this works.
// handle the image as you wish, return it, process it or something else.
}
}