UWP 应用程序将图像(路径)添加到 SQLite 数据库

UWP app add an image (path) to SQLite Database

您好,我正在创建一个 UWP 应用程序,并使用以下方法上传图片。

   async void imageButton_Click(object sender, RoutedEventArgs e)
    {
        FileOpenPicker open = new FileOpenPicker();
        open.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
        open.ViewMode = PickerViewMode.Thumbnail;

        // Filter to include a sample subset of file types
        open.FileTypeFilter.Clear();
        open.FileTypeFilter.Add(".bmp");
        open.FileTypeFilter.Add(".png");
        open.FileTypeFilter.Add(".jpeg");
        open.FileTypeFilter.Add(".jpg");

        // Open a stream for the selected file
        StorageFile file = await open.PickSingleFileAsync();

        // Ensure a file was selected
        if (file != null)
        {
            // Ensure the stream is disposed once the image is loaded
            using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
            {
                // Set the image source to the selected bitmap
                BitmapImage bitmapImage = new BitmapImage();
                bitmapImage.DecodePixelHeight = 200;
                bitmapImage.DecodePixelWidth = 200;

                await bitmapImage.SetSourceAsync(fileStream);
                image.Source = bitmapImage;
            }
        }
    }

我在 SQLite 中创建了一个数据库,我想将图像路径添加到数据库中,但我不知道如何使用 UWP 应用对其进行编码。感谢您的帮助。

我建议您将 byte[] 存储在 SQLite table 的 blob 列中。 这里有一个很好的 post 关于它 http://andywigleyblog.azurewebsites.net/?p=117

它具有读取和保存图像所需的信息。

最重要的部分是转换方法

private byte[] ConvertToBytes(BitmapImage bitmapImage)
{
    byte[] data = null;
    using (MemoryStream stream = new MemoryStream())
    {
        WriteableBitmap wBitmap = new WriteableBitmap(bitmapImage);
        wBitmap.SaveJpeg(stream, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100);
        stream.Seek(0, SeekOrigin.Begin);
        data = stream.GetBuffer();
    }

    return data;
}

与 SQLite 通信可以使用 Entity Framework7,如何使用它的文章可以找到 here。但是有一个问题,它只是发布候选版本 (EF 7.0.0-rc1) 并且在编译为 .NET Native 时存在问题。