1

我有一个表单,我想将图像存储到我的 sqlite 数据库中,然后我希望它作为网格背景显示在另一个页面上。我正在制作一个 Windows 商店应用程序,所以我使用的是 xaml 和 c#。我希望存储的图像作为我的 gridview 背景。

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

您可以将其存储为base64编码的图像,当您需要显示它时,您必须对图像进行解码。

试试看这个

于 2013-09-26T20:19:45.450 回答
1

Base-64 是在 SQLite 中存储图像的最佳编码技术。试试下面给定的代码。一种方法将为您提供 base-64 编码的字符串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 回答