Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字节数组转换为图像时,参数无效_C#_Arrays_Image_Byte - Fatal编程技术网

C# 将字节数组转换为图像时,参数无效

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[])); } 这个

我想在access数据库中保存图像,我使用了OLE对象

其思想是将图像转换为字节数组,然后将字节数组添加到数据库中

这就是功能:

    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.
                } 
            }