我是Windows 8开发和微软技术的新手。我做了很多iOS开发,但之前我从未碰过Visual Studio,C#等,因此我一次性学习了很多(框架,IDE,语言)。请原谅我,如果这是简单的,但我无法在任何地方找到答案。通过BitmapImage在某些目录中加载图像E_NETWORK_ERROR
注:我使用Visual Studio Express的2013,C#和Windows 8.1
为了便于学习,我只是想创建一个加载图像的应用程序,它们显示在屏幕上,并允许用户旋转,移动,调整大小和排列它们。我有这个工作,除了一个主要的错误,我无法弄清楚:当我从一些目录加载图像一切正常,当我加载其他目录的图像时,我得到E_NETWORK_ERROR和BitmapImage.ImageFailed。我看不出有什么理由。我实际上可以拍摄一张图片并将其放入一个目录中,并加载它,将相同的图像复制到另一个目录,并且不会加载。
下面的代码:
private async void addImageButton_Click(object sender, RoutedEventArgs e)
{
Windows.Storage.Pickers.FileOpenPicker filePicker = new Windows.Storage.Pickers.FileOpenPicker();
filePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
filePicker.FileTypeFilter.Add(".jpg");
filePicker.FileTypeFilter.Add(".png");
filePicker.FileTypeFilter.Add(".bmp");
filePicker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
Windows.Storage.StorageFile imageFile = await filePicker.PickSingleFileAsync();
if (imageFile != null)
{
System.Diagnostics.Debug.WriteLine(imageFile.Path);
Windows.UI.Xaml.Media.Imaging.BitmapImage bitmap = new Windows.UI.Xaml.Media.Imaging.BitmapImage(new Uri(imageFile.Path));
System.Diagnostics.Debug.WriteLine(bitmap.UriSource);
bitmap.CreateOptions = Windows.UI.Xaml.Media.Imaging.BitmapCreateOptions.None;
Image img = new Image();
img.Source = bitmap;
this.theCanvas.Children.Add(img);
}
}
这似乎从某些目录工作的伟大与图像文件,并且不与他人在所有的工作。例如:在我的图片库中,我有一个Windows 8相机应用程序保存的“相机胶卷”目录,并且我也有我的Steam截图目录。如果我尝试在Steam截图目录中打开图片,它可以正常工作;但是,如果我尝试在Camera Roll目录中加载图像,则会失败并显示E_NETWORK_ERROR。如果我将相机胶卷目录中的图像复制到Steam截图目录,我可以打开它们。
任何人都可以指出什么是错的?我开始认为这不是一个代码问题,而是一个安全/功能/声明类型的东西。是否有我需要声明或请求无限制地访问文件系统?我需要以不同的方式形成自己的URI吗?
编辑:这里是从调试语句一些输出,显示的路径和URI:
加载的罚款:
C:\Program Files (x86)\Steam\userdata\24321739\760\remote\72850\screenshots\2013-12-04_00001.jpg
file:///C:/Program Files (x86)/Steam/userdata/24321739/760/remote/72850/screenshots/2013-12-04_00001.jpg
在E_NETWORK_ERROR
C:\Users\Adam\Pictures\Camera Roll\WIN_20131023_194718.JPG
file:///C:/Users/Adam/Pictures/Camera Roll/WIN_20131023_194718.JPG
谢谢。我最终用流解决了这个问题。我上面发布了解决方案。问题:我不明白为什么解决方案解决了问题。我发现,在我学习Windows应用商店应用程序开发时,我经常无法理解Cocoa/Cocoa Touch可以使用的方式背后的“为什么”。 –