画像を sqlite データベースに保存したいフォームがあり、それを別のページにグリッドの背景として表示したいと考えています。Windows ストア アプリを作成しているため、xaml と c# を使用しています。保存された画像をグリッドビューの背景として使用したい。
質問する
1445 次
3 に答える
1
2つの方法で画像をデータベースに保存できます-
- 画像を変換することで
byte[]
- Image を bytes[] に変換し、sqlite Blob 型パラメータに保存します。
- その Blob データ型を取得し、再度 byte[] に格納してから、Image に変換します
- 画像をbase64文字列に変換することにより
- 画像を base64 文字列ストアに変換し、varchar/varchar2 型の sqlite に変換します
- sqlite db から base64 文字列を取得し、画像に変換します
于 2013-09-27T10:47:06.340 に答える
1
Base-64 は、SQLite に画像を格納するための最適なエンコード手法です。以下のコードを試してください。1 つのメソッドは base-64 でエンコードされた の文字列を提供し、もう 1 つのメソッドはオブジェクトStorageFile
を返しますBitmapImage
。これは のソースとして設定できます<Image />
。
private async Task<BitmapImage> Base64StringToBitmap(string source)
{
var ims = new InMemoryRandomAccessStream();
var bytes = Convert.FromBase64String(source);
var dataWriter = new DataWriter(ims);
dataWriter.WriteBytes(bytes);
await dataWriter.StoreAsync();
ims.Seek(0);
var img = new BitmapImage();
img.SetSource(ims);
return img;
}
private async Task<string> ConvertStorageFileToBase64String(StorageFile imageFile)
{
var stream = await imageFile.OpenReadAsync();
using (var dataReader = new DataReader(stream))
{
var bytes = new byte[stream.Size];
await dataReader.LoadAsync((uint)stream.Size);
dataReader.ReadBytes(bytes);
return Convert.ToBase64String(bytes);
}
}
于 2013-09-27T06:29:45.453 に答える
1
base64 でエンコードされた画像として保存できます。表示する必要がある場合は、画像をデコードする必要があります。
これを読んでみてください
于 2013-09-26T20:19:45.450 に答える