从字节数组(使用 EF)将图像保存在磁盘上,GDI+ 中发生一般性错误

Save image on disk from byte array (using EF), A generic error occurred in GDI+

我正在开发一个 winforms 程序,它可以从数据库中获取字节数组,将其转换为图像并将其保存在磁盘上。

图片在 PictureBox 元素中显示良好,但是当我尝试保存文件时,代码抛出错误:"the generic error occurred in GDI+"。图片是在我的文件夹中生成的,但无法读取(重量为 0 个八位字节)。

var profilImage = (from user in _context.mytable
                            where user.Id == itemData.Id
                            select user.ProfilImage).FirstOrDefault();

Image DcImage = ByteArrayToImage(profilImage);
this.pictureBox1.Image = DcImage;

DcImage.Save(this.tb_choose_folder.Text + @"\test.jpg", ImageFormat.Jpeg);

方法 ByteArrayToImage()

// Convert a byte array to an image
    private Image ByteArrayToImage(byte[] byteArrayIn)
    {
        if(byteArrayIn == null)
        {
            throw new NullReferenceException("byteArrayIn");
        }

        using (MemoryStream mStream = new MemoryStream(byteArrayIn))
        {
            return Image.FromStream(mStream);
        }
    }

下面是我将图像转换为字节数组的方法:

System.Drawing.Image image = System.Drawing.Image.FromFile(@"myFolder\test_1.jpg");
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);

        var imageByteArray = ms.ToArray();

imageByteArray 放在 sql 服务器图像类型字段中

感谢您的建议

您不需要执行任何这些操作。您的字节已经是 JPEG 文件;您可以使用 File.ReadAllBytes()File.WriteAllBytes().

从磁盘读取和写入它们