Сохранение и получение png из базы данных SQLite?
При загрузке прозрачных изображений в формате png в список изображений, а затем при их непосредственном размещении в виде списка качество является высоким.
Но сейчас я пытаюсь сохранить изображения в базе данных SQLite и вернуть их в том же высоком качестве, но со всем, что я пробую, качество очень плохое.
Я попробовал типы полей SQLite IMAGE, CHAR и BLOB и различные методы, чтобы получить данные обратно. Есть ли лучший тип поля?
Я попытался сохранить его как растровое изображение, но не смог выяснить, как преобразовать его обратно в прозрачный png. Может быть, это будет работать?
Это последнее, что я попробовал с типом поля CHAR. Когда я добавляю его в список изображений, качество очень плохое (dr - SQLite datarow).
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);
}
2 ответа
Я не сохранял правильно. Это получило качество там, где мне это нужно.
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 как есть.