从字节数组(使用EF)将图像保存在磁盘上,GDI +

时间:2015-06-04 14:19:04

标签: c# image winforms bytearray

我正在开发一个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图像类型字段

感谢您的建议

1 个答案:

答案 0 :(得分:1)

您无需执行任何操作。你的字节已经是一个JPEG文件;您可以使用validates :email, uniqueness: { case_sensitive: false, message: I18n.t("activerecord.errors.messages.email", link: Rails.application.routes.url_helpers.new_password_reset_url) } File.ReadAllBytes()从磁盘读取和写入它们。