从UWP中的url获取WriteableBitmap?

时间:2016-03-11 18:59:44

标签: c# win-universal-app bitmapimage writeablebitmap storagefile

所以我的应用程序从一个url获取一个BitmapImage,这是有效的,然后我需要将该图像分配给writeablebitmap。目前我有这个:

        Debug.WriteLine("Poster opened for loading. Url=" + e);
        BitmapImage img = new BitmapImage(new Uri(e));
        Backdrop.Source = img;
        img.ImageOpened += async (s, e1) =>
        {
            WriteableBitmap wbm = new WriteableBitmap(((BitmapImage)s).PixelWidth, ((BitmapImage)s).PixelHeight);
            var storageFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri(e));
            using (var stream = await storageFile.OpenReadAsync())
            {
                await wbm.SetSourceAsync(stream);
            }
        };

这是一个非常糟糕的代码,但这一切都有效,直到StorageFile.GetFileFromApplicationUriAsync(),我告诉该值在一个意想不到的范围内。我猜这是因为它只接受" ms-appx:///"格式,而不是" http://"。有没有办法让这个工作?并最终以一种更清洁的方式? 我觉得这很容易,但这是一场噩梦。我从昨天开始就试图这样做。

P.S。我知道这可能看似重复,但我发现StackOverflow上没有任何实际工作。

1 个答案:

答案 0 :(得分:2)

试试这个:

var httpClient = new HttpClient();
var buffer = await httpClient.GetBufferAsync(pictureUri);
var writeableBitmap = new WriteableBitmap(width, height);

using (var stream = buffer.AsStream())
{
    await writeableBitmap.SetSourceAsync(stream.AsRandomAccessStream());
}