我跟法師源打在WPF和嘗試這個簡單的測試,看看能不能買到什麼幸運:爲什麼從服務器加載圖像的簡單代碼不起作用?
var test = new BitmapImage(new Uri("https://thenotebook.org/sites/default/files/fallCartoon.jpg"));
看着調試窗口中測試時
,它的所有屬性都設置爲null,因此它似乎沒有加載圖像。爲什麼?
我跟法師源打在WPF和嘗試這個簡單的測試,看看能不能買到什麼幸運:爲什麼從服務器加載圖像的簡單代碼不起作用?
var test = new BitmapImage(new Uri("https://thenotebook.org/sites/default/files/fallCartoon.jpg"));
看着調試窗口中測試時
,它的所有屬性都設置爲null,因此它似乎沒有加載圖像。爲什麼?
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);
繼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;
}
}
}
你能在同一個URI你的瀏覽器打開該影像?如果單獨創建URI然後將其饋送到Bitmap會發生什麼? –
是的,我可以。我這樣做是爲了確保它是一個有效的uri。 – mans