2013-04-11 126 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

相关问题