从SQLite数据库中保存和检索png
本文关键字:检索 png 保存 SQLite 数据库 | 更新日期: 2023-09-27 18:20:45
当将透明的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);
}
我没有正确保存。这是我需要的质量。
FileInfo fi = new FileInfo(openFileDialog1.FileNames[j]);
FileStream fileStream = fi.OpenRead();
Image img = new Bitmap(fileStream);
string base64ImageString = ImageToBase64(img, ImageFormat.Bmp);
我在透明度方面仍然有问题,但我会解决的。
我的最后一条评论被删除了,因为我没有在那里提供任何答案。但是,我现在将提供我的答案供将来参考,因为我自己解决了我的问题。关键是,当你要将图像保存到sqlite时,只需确保将其保存为PNG,当然它是透明的,然后你就可以按原样从sqlite中检索它。