将透明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);
有人可以告诉我如何将透明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);
}
答案 0 :(得分:1)
我没有正确保存。这在我需要的地方得到了质量。
FileInfo fi = new FileInfo(openFileDialog1.FileNames[j]);
FileStream fileStream = fi.OpenRead();
Image img = new Bitmap(fileStream);
string base64ImageString = ImageToBase64(img, ImageFormat.Bmp);
我仍然存在透明度方面的问题,但我会对其进行处理。