2

将透明 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);
}
4

1 回答 1

1

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

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

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

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

于 2013-07-02T04:57:29.753 回答