2

透明な 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);
}
4

1 に答える 1