2017-02-27 1 views
0

전화 라이브러리에서 이미지를 가져와 표시 할 수있었습니다. 이것은 코드입니다. 질문은 어떻게합니까 연락처 Sqlite 데이터베이스에이 이미지를 삽입하고 검색하고 이미지를 가져온 후 다시 표시합니까? 여기 내 코드가있다. 자세한 단계별 지시 사항은 여기에서 감사하겠습니다.Windows Phone에서 sqlite 데이터베이스에 비트 맵 이미지를 삽입하는 방법 8.1 C#

 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; 


      } 
     } 

    } 
+0

왜 그냥 SQLite는 데이터베이스에 전화 라이브러리에있는 이미지의 경로를 저장하지 않고 동일한하는 것보다 이미지 자체? – gattsbr

+0

시도해 보겠습니다. 하지만 사용자가 전화에서 이미지를 삭제하더라도 영향을받지는 않습니까? –

답변

0

가장 좋은 방법은 이미지를 SQLite에 저장하지 않는 것입니다. 그냥 ApplicationData.Current.LocalFolder에 복사하고 경로를 저장하십시오. 당신이 정말로 SQLite는의 BitmapImage를 저장하려면

, 단지 바이트 배열로 변환 : Convert a bitmapimage to byte[] array for storage in sqlite database

관련 문제