【发布时间】:2020-07-08 21:16:09
【问题描述】:
我正在开发一个桌面应用程序,我想在其中执行特定任务,即将图像保存在数据库中、从数据库中获取图像并在 PictureBox 中显示和从 Picturebox Tool 下载图像并保存在文件夹中
这是任务代码,
-
将图像保存在数据库中,因为我使用 ImageToBase64 函数以字符串格式保存在数据库中。喜欢:
ImageToBase64(pictureBox1.Image, System.Drawing.Imaging.ImageFormat.Jpeg)
ImageToBase64 函数代码:
public string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format)
{
using (MemoryStream ms = new MemoryStream())
{
if (image != null)
{
// Convert Image to byte[]
image.Save(ms, format);
byte[] imageBytes = ms.ToArray();
// Convert byte[] to Base64 String
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
else
{
return null;
}
}
}
现在从数据库中获取图像并在图片框中显示图像
picturebox1.image = Base64ToImage(dtSelStock.Rows[0]["DesignImage"].ToString())
Base64ToImage 函数代码:
public Image Base64ToImage(string base64String)
{
if (base64String != "")
{
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(base64String);
MemoryStream ms = new MemoryStream(imageBytes, 0,
imageBytes.Length);
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
Image image = Image.FromStream(ms, true);
return image;
}
else
{
return null;
}
}
所以,这两个任务完美地工作。但是第三个也是最后一个任务是从图片框中将图像保存在文件夹中。我尝试了一些代码但没有正常工作,实际上显示错误,即
pictureBox1.Image.Save("D\\Image\\'" + pictureBox1.Image + "'", ImageFormat.JPEGImage);
【问题讨论】:
-
更新您的问题以提供错误\异常
-
@BrettCaswell 已编辑。请检查它。
-
您还应该能够通过
pictureBox2.image = Base64ToImage(ImageToBase64(pictureBox1.Image, System.Drawing.Imaging.ImageFormat.Jpeg));删除对可重现的数据库\数据表概念的引用来最小化此代码以便更轻松地重现它,对吧? -
@BrettCaswell 实际上我正在通过 sql 查询获取数据表中的数据并从该数据表中显示图片框中的图像,但它的工作完全不是问题,
-
您没有提供minimal reproducible example,也没有提供有关您遇到的任何错误的任何具体信息,因此应该关闭该问题。也就是说,根据您发布的内容,您未能在驱动器号之后包含
:字符。 那 说,从PictureBox保存确实是错误的。您应该保存最初存储在数据库中的确切字节。否则,每次保存图像时,都会稍微降低质量(因为您保存为 JPEG)。
标签: c# .net image desktop-application picturebox