2016-09-16 6 views
0

BitmapImagebyte[]으로 변환해야이 데이터를 SQLite 데이터베이스에 저장할 수 있으며 반대로로드 할 수 있습니다.UWP에서 BitmapImage를 변환하여 sqlite에 삽입

<Image x:Name="image" HorizontalAlignment="Left" Height="254" Margin="50,117,0,0" VerticalAlignment="Top" Width="244" Source="Assets/LockScreenLogo.png"/>

내 C# 코드 :이 작동하지 않습니다

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent(); 
     BitmapImage test = new BitmapImage(); 
     test = (BitmapImage)image.Source; 
     image.Source = test; 

     byte[] array = ImageToByte(test); 
     Database.CreateDB(); 
     Database.InsertData(array); 
    } 



    #region convert 
    public byte[] ImageToByte(BitmapImage image) 
    { 

     //WriteableBitmap wb; 
     using (InMemoryRandomAccessStream ms = new InMemoryRandomAccessStream()) 
     { 
      image.SetSource(ms); 

      WriteableBitmap wb = new WriteableBitmap(244, 254); 
      wb.SetSource(ms); 

      using (Stream stream = wb.PixelBuffer.AsStream()) 
      using (MemoryStream memoryStream = new MemoryStream()) 
      { 
       stream.CopyTo(memoryStream); 
       return memoryStream.ToArray(); 
      } 
     } 
    } 

    public BitmapImage ByteToImage(byte[] array) 
    { 
     BitmapImage image = new BitmapImage(); 
     using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream()) 
     { 
      stream.AsStreamForWrite().Write(array, 0, array.Length); 
      stream.Seek(0); 
      image.SetSource(stream); 
     } 
     return image; 
    } 
    #endregion 

} 

내 XAML 이미지를 가지고있다.

예외 메시지 :

"형식 'System.ArgumentNullException'의 예외가 mscorlib.ni.dll에서 발생하지만

추가 정보는 사용자 코드에서 처리되지 않았습니다. 값은 null 일 수 없습니다"

누군가 나를 도울 수 있습니까?

+0

가능한 [UWP에서 BitmapImage를 바이트 배열로 변환] (http://stackoverflow.com/questions/36108056/convert-a-bitmapimage-to-byte-array-in-uwp) – Clemens

답변

0

이미지의 원본 (예 : StorageItem 또는 URL)을 보유하지 않으면 불가능합니다.

픽셀에 액세스하고 나중에 처리하려면 BitmapImage 대신 WriteableBitmap 개체가 필요합니다.