繁体   English   中英

尝试将图像保存到Windows Phone 8中的媒体库时发生异常

[英]Exception while trying to save an image into Media Library in Windows Phone 8

尝试将图像保存到MediaLibrary时出现以下错误

Microsoft.Xna.Framework.ni.dll中发生类型'System.InvalidOperationException'的异常,但未在用户代码中处理

这是我正在使用的代码

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);
}

使用的方法是

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);
}

我也尝试了流而不是字节数组。

您需要检查的第一件事是您是否已将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;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM