从/ Assets /在WPF应用程序中加载图像的问题

时间:2014-03-03 09:46:35

标签: c# wpf xaml windows-phone-7 windows-phone-8

我有一些非常奇怪的问题,试图将文件实际加载到我的项目中以保存到本地文件夹。

我可以在我的.xaml代码中正确加载文件,如下所示:

<BitmapImage x:Key="Image" UriSource ="/Assets/Submandibular_oedema.jpg" />

我可以在我的页面上显示该图像。但是,当我尝试加载图像并在我的xaml.cs代码中使用它时,就像这样

uriMyFile = new Uri("/Assets/Submandibular_oedema.jpg", UriKind.RelativeOrAbsolute);

找不到该文件,因此不会让我对URI做任何事情。

对于背景,我的目标是获取图像流,然后将其保存到本地文件夹。

我知道这将是一个愚蠢的小问题,但我找不到任何解决方案。

谢谢!

3 个答案:

答案 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"));

这对我来说很有用,同时试图为每个地方显示不同的地图图标。