我正在使用wpf中的法师源并尝试这个简单的测试,看看我是否能获得任何幸运:
var test = new BitmapImage(new Uri("https://thenotebook.org/sites/default/files/fallCartoon.jpg"));
在调试窗口中查看测试时,其所有属性都设置为null,因此它似乎没有加载图像。为什么呢?
答案 0 :(得分:0)
BitmapImage异步加载网络数据。这意味着它会在后台开始下载时立即返回。所以你的代码可能没有任何问题。检查IsDownloading
属性。订阅DownloadCompleted
和DownloadFailed
个活动。
根据我们的评论同步版本:
var bytes = new WebClient().DownloadData("https://thenotebook.org/sites/default/files/fallCartoon.jpg");
var test = new BitmapImage();
test.BeginInit();
test.StreamSource = new MemoryStream(bytes);
test.EndInit();
Console.WriteLine(test.PixelWidth);
Console.WriteLine(test.PixelHeight);
答案 1 :(得分:0)
遵循fejesjoco的建议:
public static BitmapImage ImageFromUriSync(string uri)
{
using(var client = new WebClient())
{
byte[] data = client.DownloadData(uri);
using(var stream = new MemoryStream(data))
{
var img = new BitmapImage();
img.BeginInit();
img.CacheOption = BitmapCacheOption.OnLoad;
img.StreamSource = stream;
img.EndInit();
return img;
}
}
}