Сохранение и получение 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 как есть.

Другие вопросы по тегам