我有一些非常奇怪的问题,试图将文件实际加载到我的项目中以保存到本地文件夹。
我可以在我的.xaml代码中正确加载文件,如下所示:
<BitmapImage x:Key="Image" UriSource ="/Assets/Submandibular_oedema.jpg" />
我可以在我的页面上显示该图像。但是,当我尝试加载图像并在我的xaml.cs代码中使用它时,就像这样
uriMyFile = new Uri("/Assets/Submandibular_oedema.jpg", UriKind.RelativeOrAbsolute);
找不到该文件,因此不会让我对URI做任何事情。
对于背景,我的目标是获取图像流,然后将其保存到本地文件夹。
我知道这将是一个愚蠢的小问题,但我找不到任何解决方案。
谢谢!
答案 0 :(得分:0)
Starktastics评论后更新
我终于理解了你的问题:你需要Application.GetResourceStream
方法来检索资源流,从该流中读取并将其写入文件流。
var streamResourceInfo = Application.GetResourceStream(uri);
var stream = streamResourceInfo.Stream;
var byteBuffer = new byte[stream.Length];
using (stream)
{
stream.Read(byteBuffer, 0, byteBuffer.Length);
}
using (var fileStream = new FileStream("photo.jpg", FileMode.Create))
{
fileStream.Write(byteBuffer, 0, byteBuffer.Length);
}
我已经更新了您可以下载的解决方案here。
原始回答:
如果您使用WPF应用程序,请确保您添加到项目中的资产是“构建操作'资源”。单击文件后,可以在属性窗格中检查该内容。
在任何情况下,您的URI语法都是正确的。我自己在一个小项目中检查了它并且它有效。您可以下载它here(DropBox链接)
随意发表评论。
答案 1 :(得分:0)
尝试完整路径(指定项目程序集)
uriMyFile = new Uri("/YourAssemblyName;component/Assets/Submandibular_oedema.jpg",UriKind.RelativeOrAbsolute);
答案 2 :(得分:0)
尝试使用
uriMyFile=new Uri("ms-appx:///Assets/YourImage.png"));
这对我来说很有用,同时试图为每个地方显示不同的地图图标。