C# 在UWP中保存图像时拒绝访问。访问被拒绝。(HRESULT异常:0x80070005(E_访问被拒绝))

C# 在UWP中保存图像时拒绝访问。访问被拒绝。(HRESULT异常:0x80070005(E_访问被拒绝)),c#,uwp,windows-10-universal,uwp-xaml,win2d,C#,Uwp,Windows 10 Universal,Uwp Xaml,Win2d,我正在使用Windows10SDK上的通用windows应用程序在图像中识别的面上绘制矩形 我正在使用Win2D编辑图片并在其上绘制矩形。我可以从图片库中读取文件,但在编辑后尝试保存图像时,会出现以下错误: 访问被拒绝。(HRESULT的例外情况:0x80070005 (E_)(拒绝) 以下是我用来在图像上绘制矩形的方法: private async void DrawRect() { CanvasDevice device = CanvasDevice.GetShare

我正在使用Windows10SDK上的通用windows应用程序在图像中识别的面上绘制矩形

我正在使用Win2D编辑图片并在其上绘制矩形。我可以从图片库中读取文件,但在编辑后尝试保存图像时,会出现以下错误:

访问被拒绝。(HRESULT的例外情况:0x80070005 (E_)(拒绝)

以下是我用来在图像上绘制矩形的方法:

private async void DrawRect()
    {
        CanvasDevice device = CanvasDevice.GetSharedDevice();
        CanvasBitmap bitmap = null;
        CanvasRenderTarget offscreen = null;

        Windows.Storage.StorageFile photofile = await KnownFolders.PicturesLibrary.GetFileAsync("image.jpg");

        if(photofile != null)
        {
            using (var stream = await photofile.OpenReadAsync())
            {
                bitmap = await CanvasBitmap.LoadAsync(device, stream);
            }
        }

        if(bitmap != null)
        {
            offscreen = new CanvasRenderTarget(device, bitmap.SizeInPixels.Width, bitmap.SizeInPixels.Height, 96);
            using (var ds = offscreen.CreateDrawingSession())
            {
                ds.Clear(Colors.Transparent);
                ds.DrawImage(bitmap);
                ds.DrawRectangle(25, 35, 270, 352, Colors.Blue,4);
            }

            var photoFile = await KnownFolders.PicturesLibrary.CreateFileAsync("image2.jpg", CreationCollisionOption.ReplaceExisting);                        

            if (photofile != null)
            {
                await offscreen.SaveAsync(photofile.Path);
            }              

            //await offscreen.SaveAsync(photoFile.Path);*/
        }
    }
异常在屏幕外最后一行抛出。SaveAsync

上述错误的堆栈跟踪为:

at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在System.Runtime.CompilerServices.TaskAwaiter.GetResult()中 在identifFacesp.IdentifiedFaces.d_u5.MoveNext()处

我已设置访问appmanifest文件中图片文件夹的权限

我是否需要设置一些附加权限才能将映像保存到磁盘中


当我尝试将图像保存到任何其他位置时,也会出现相同的错误。

尝试通过流而不是路径访问文件:

var photoFile = await KnownFolders.PicturesLibrary.CreateFileAsync("image2.jpg", CreationCollisionOption.ReplaceExisting);

if (photofile != null)
{
    using (var stream = await photofile.OpenAsync(FileAccessMode.ReadWrite))
    {
        await offscreen.SaveAsync(stream, CanvasBitmapFileFormat.Jpeg);
    }
}

在UWP中,如果您通过path访问文件,在许多情况下您可能会被拒绝访问,这应该通过StorageFile来完成。

您是否尝试过添加与文件访问相关的所有权限并查看其是否有效?如果是权限,您可以删除并查看哪一个会中断。。。有点尝试和错误,但不会花几分钟!是的,我在appxmanifest的功能中设置了权限。但一切都没有结果。