将图像从字节数组保存到磁盘(使用EF),在GDI+中发生了一个通用错误

本文关键字:发生了 GDI+ 错误 一个 EF 字节数 字节 图像 数组 保存 使用 | 更新日期: 2023-09-27 17:53:27

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

图片在PictureBox元素中显示得很好,但是当我试图保存文件时,代码抛出一个错误:"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 server图像类型字段

谢谢你的建议

将图像从字节数组保存到磁盘(使用EF),在GDI+中发生了一个通用错误

你不需要做这些。你的字节已经是一个JPEG文件;您可以使用File.ReadAllBytes()File.WriteAllBytes()从磁盘读取和写入它们。

相关文章: