C# 在UWP中保存图像时拒绝访问。访问被拒绝。(HRESULT异常:0x80070005(E_访问被拒绝))
我正在使用Windows10SDK上的通用windows应用程序在图像中识别的面上绘制矩形 我正在使用Win2D编辑图片并在其上绘制矩形。我可以从图片库中读取文件,但在编辑后尝试保存图像时,会出现以下错误: 访问被拒绝。(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
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的功能中设置了权限。但一切都没有结果。