从SQLite数据库中保存和检索png?

kyxcudwk  于 2022-12-13  发布在  SQLite
关注(0)|答案(2)|浏览(166)

当下载透明png图像到一个图像列表,然后把它们直接放在一个列表视图的质量是高的。
但现在我试图将图像保存到SQLite数据库中,并让它们以同样的高质量返回,但我所尝试的一切质量都很差。
我尝试了SQLite的IMAGE、CHAR和BLOB字段类型以及各种方法来取回数据。有最好的字段类型吗?
我试着把它保存为位图,但是我找不到如何把它转换回透明的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);

有人能告诉我如何在SQLite中将透明的PNG保存为高质量的图像,并以同样的高质量将其恢复吗?
谢谢

编辑

我可以使用以下命令保存为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);
}
fkaflof6

fkaflof61#

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

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

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

我仍然有一个问题的透明度,但我会努力。

ui7jx7zq

ui7jx7zq2#

我的最后一条评论被删除了,因为我没有提供任何答案。但是,我会提供我的答案,现在为未来的参考,因为我自己修复了我的问题。关键是当你要保存一个图像到sqlite,只要确保你要保存为PNG,当然它是透明的,然后,你可以只从sqlite检索它。

相关问题