【问题标题】:Saving and Retrieving png from SQLite database?从 SQLite 数据库保存和检索 png?
【发布时间】:2013-06-28 19:17:44
【问题描述】:

将透明 png 图像下载到图像列表中然后将它们直接放在列表视图中时,质量很高。

但是现在我正在尝试将图像保存到 SQLite 数据库中并以相同的高质量恢复它们,但是我尝试的所有方法的质量都很差。

我尝试了 IMAGE、CHAR 和 BLOB 的 SQLite 字段类型以及各种方法来获取数据。有没有最好的字段类型?

我尝试将其保存为位图,但我不知道如何将其转换回透明 png。也许这会起作用?

这是我尝试使用 CHAR 字段类型的最后一件事。当我将它添加到图像列表时,质量很差(dr 是 SQLite 数据行)。

byte[] imageBytes = Convert.FromBase64String(dr["image"].ToString());
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);

ms.Write(imageBytes, 0, imageBytes.Length);
Image image = Image.FromStream(ms, true);

谁能告诉我如何将透明 png 保存为 SQLite 中的高质量图像并以相同的高质量恢复它?

谢谢

编辑

我可以用这个保存到 BMP:

string base64ImageString = ImageToBase64(imageList1.Images[i], ImageFormat.bmp);

但不知道如何将其恢复为透明 png,

编辑

真正的问题是我失去了透明度。这些部分现在是黑色的。

我正在使用它,但它似乎没有帮助:

byte[] imageBytes = Convert.FromBase64String(dr["image"].ToString());
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);    

using (MemoryStream mss = new MemoryStream())
{
  bmp.Save(ms, ImageFormat.Png);
}

【问题讨论】:

  • SQLite 不会更改 blob 的内容。您如何将图像保存到数据库中?
  • ImageToBase64的代码是什么?该方法会引起注意。
  • 我目前正在使用:string base64ImageString = ImageToBase64(imageList1.Images[i], ImageFormat.Bmp);请看我最新的编辑

标签: c# winforms sqlite listview png


【解决方案1】:

我没有正确保存。这得到了我需要的质量。

FileInfo fi = new FileInfo(openFileDialog1.FileNames[j]);
FileStream fileStream = fi.OpenRead();
Image img = new Bitmap(fileStream);

string base64ImageString = ImageToBase64(img, ImageFormat.Bmp);

我仍然对透明度有疑问,但我会努力解决的。

【讨论】:

    猜你喜欢
    • 2011-12-30
    • 2011-09-24
    • 2012-11-30
    • 2012-06-29
    • 2021-05-07
    • 1970-01-01
    • 2019-07-03
    • 2016-10-10
    • 1970-01-01
    相关资源
    最近更新 更多