1

画像を sqlite データベースに保存したいフォームがあり、それを別のページにグリッドの背景として表示したいと考えています。Windows ストア アプリを作成しているため、xaml と c# を使用しています。保存された画像をグリッドビューの背景として使用したい。

4

3 に答える 3

1

2つの方法で画像をデータベースに保存できます-

  1. 画像を変換することでbyte[]
    1. Image を bytes[] に変換し、sqlite Blob 型パラメータに保存します。
    2. その Blob データ型を取得し、再度 byte[] に格納してから、Image に変換します
  2. 画像をbase64文字列に変換することにより
    1. 画像を base64 文字列ストアに変換し、varchar/varchar2 型の sqlite に変換します
    2. 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 に答える