2013-04-11 129 views
1

雖然試圖將圖像保存爲MediaLibrary我收到以下錯誤異常試圖保存圖像到媒體庫中的Windows Phone 8

「System.InvalidOperationException」類型的異常出現在微軟。 Xna.Framework.ni.dll但在用戶代碼

這裏處理是我使用

if (SourceImage != null) // Source Image is WriteableBitmap 
{ 
    var imageArray = SourceImage.ToByteArray(); // WriteableBitmapExWinPhone (extension method) 
    var res = await SavePhotoToImageHub(imageArray); 
    await ShowMessage(res ? AppResources.MEDIA_LIBRARY_SUCCESS_MESSAGE : AppResources.MEDIA_LIBRARY_FAILURE_MESSAGE); 
} 

的甲基代碼od使用是

private Task<bool> SavePhotoToImageHub(byte[] imageArray) 
{ 
    using (var mediaLibrary = new MediaLibrary()) 
    { 
     var fileName = string.Format("Gs{0}.jpg", Guid.NewGuid()); 
     var picture = mediaLibrary.SavePicture(fileName, imageArray); 
     if (picture.Name.Contains(fileName)) return Task.FromResult(true); 
    } 

    return Task.FromResult(false); 
} 

我也嘗試了流而不是字節數組。

+0

您是否已將ID_CAP_MEDIALIB_PHOTO添加到清單? – 2013-04-11 11:22:54

回答

6

您需要檢查的第一件事是您是否已將ID_CAP_MEDIALIB_PHOTO添加到您的應用清單。

第二件事是流 - 你有沒有嘗試重置它的開始?此方法適用於我:

private bool SavePhotoToImageHub(WriteableBitmap bmp) 
    { 

     using (var mediaLibrary = new MediaLibrary()) 
     { 
      using (var stream = new MemoryStream()) 
      { 
       var fileName = string.Format("Gs{0}.jpg", Guid.NewGuid()); 
       bmp.SaveJpeg(stream, bmp.PixelWidth, bmp.PixelHeight, 0, 100); 
       stream.Seek(0, SeekOrigin.Begin); 
       var picture = mediaLibrary.SavePicture(fileName,stream); 
       if (picture.Name.Contains(fileName)) return true; 
      } 
     } 
     return false; 
    } 
+0

Ooo謝謝我忘了添加清單的功能 – 2013-04-11 11:39:47

相關問題