从字节数组(使用 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()
.
从磁盘读取和写入它们
我正在开发一个 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()
.