如何在Windows Phone 8.1 c#上将位图图像插入sqlite数据库

时间:2017-02-27 19:34:25

标签: c# windows-phone-8.1

我设法从手机库中挑选一张图片并进行显示。这是代码。问题是如何将此图像插入我的Sqlite联系人数据库并检索它并在获取图像后再次显示?这是我的代码。从这里可以看到详细的逐步说明。

     namespace Mobile_Life.Pages
{

public sealed partial class NextOFKin_Update_Delete : Page
    {
        int Selected_ContactId = 0;
        DatabaseHelperClass Db_Helper = new DatabaseHelperClass();
        Contacts currentcontact = new Contacts();
        CoreApplicationView view;

        public NextOFKin_Update_Delete()
        {
            this.InitializeComponent();
            HardwareButtons.BackPressed += HardwareButtons_BackPressed;
            view = CoreApplication.GetCurrentView();

        }

        private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
        {
            if (Frame.CanGoBack)
            {
                e.Handled = true;
                Frame.GoBack();
            }
        }

        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            await StatusBar.GetForCurrentView().ShowAsync();
            Selected_ContactId = int.Parse(e.Parameter.ToString());
            currentcontact = Db_Helper.ReadContact(Selected_ContactId);//Read selected DB contact
            namestxt.Text = currentcontact.Name;//get contact Name
            relationtxt.Text = currentcontact.Relation;//get contact relation
            phonetxt.Text = currentcontact.PhoneNumber;//get contact PhoneNumber

        }

        private void Update_click(object sender, RoutedEventArgs e)
        {
            currentcontact.Name = namestxt.Text;
            currentcontact.Relation = relationtxt.Text;
            currentcontact.PhoneNumber = phonetxt.Text; 
            Db_Helper.UpdateContact(currentcontact);//Update selected DB contact Id
            Frame.Navigate(typeof(NextOfKin));
        }

        private void Delete_click(object sender, RoutedEventArgs e)
        {
            Db_Helper.DeleteContact(Selected_ContactId);//Delete selected DB contact Id.
            Frame.Navigate(typeof(NextOfKin));
        }

        private void profile_img(object sender, TappedRoutedEventArgs e)
        {
            FileOpenPicker filePicker = new FileOpenPicker();
            filePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
            filePicker.ViewMode = PickerViewMode.Thumbnail;

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

            filePicker.PickSingleFileAndContinue();
            view.Activated += viewActivated;
        }

        private async void viewActivated(CoreApplicationView sender, IActivatedEventArgs args1)
        {
            FileOpenPickerContinuationEventArgs args = args1 as FileOpenPickerContinuationEventArgs;

            if (args != null)
            {
                if (args.Files.Count == 0) return;

                view.Activated -= viewActivated;
                StorageFile storageFile = args.Files[0];
                var stream = await storageFile.OpenAsync(FileAccessMode.Read);
                var bitmapImage = new BitmapImage();
                await bitmapImage.SetSourceAsync(stream);

                var decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(stream);
                profile.ImageSource = bitmapImage;


            }
        }

    }

1 个答案:

答案 0 :(得分:0)

最好的方法是不将图像存储在SQLite中。只需将其复制到a=0 b=0 for row in Correction.iterrows(): b+=1 for row1 in dataframe.iterrows(): c+=1 a=0 print('Handling correction '+str(b)+' and deal '+str(c)) if (Correction.loc[row,['BO Branch Code']]==dataframe[row1,['wings Branch']] and Correction[row,['Profit Center']]==dataframe[row1,['Profit Center']] and Correction[row,['Back Office']]==dataframe[row1,['Back Office']] and Correction[row,['BO System Code']]==dataframe[row1,['BO System Code']]): 并保存路径即可。

如果你真的想在SQLite中存储BitmapImage,只需将其转换为字节数组:Convert a bitmapimage to byte[] array for storage in sqlite database