5

キャンバスにWindows.UI.Xaml.Controls.Imageを追加しました。HttpClientを使用してhttp呼び出しを行い、画像をダウンロードしています。画像をストリームとして取得し、BitmapImageオブジェクトのソースとして追加していますが、画像が読み込まれていません。誰か私が間違っていることを教えてもらえますか

コード:

        var httpClient = new HttpClient();
        var content = await httpClient.GetStreamAsync(imageUrl);


            var ras = new InMemoryRandomAccessStream();
            await content.CopyToAsync(ras.AsStreamForWrite());
            bitmap = new BitmapImage();
            bitmap.SetSource(ras);

            myImage.Source = bitmap;
4

4 に答える 4

10

私はなんとかそれを機能させることができました。以下はコードです:

     var httpClient = new HttpClient();            
     var contentBytes = await httpClient.GetByteArrayAsync(uri);                          
     var ims = new InMemoryRandomAccessStream();                
     var dataWriter = new DataWriter(ims);
     dataWriter.WriteBytes(contentBytes);
     await dataWriter.StoreAsync();
     ims.Seek(0);

     bitmap = new BitmapImage();                
     bitmap.SetSource(ims);                

     myImage.Source = bitmap;                
于 2012-08-02T04:54:09.003 に答える
5

私はこれがうまくいくと信じています:

myImage.Source = new BitmapImage(new Uri(imageUrl));
于 2012-08-01T13:08:10.560 に答える
2

これは、Webから画像を正常にダウンロードするために使用したコードスニペットです。画像をローカルストレージにコピーし、URIを新しい(ローカル)場所に返します。

        using (var response = await HttpWebRequest.CreateHttp(internetUri).GetResponseAsync())
        {
            using (var stream = response.GetResponseStream())
            {
                var desiredName = string.Format("{0}.jpg", uniqueName);
                var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(desiredName, CreationCollisionOption.ReplaceExisting);

                using (var filestream = await file.OpenStreamForWriteAsync())
                {
                    await stream.CopyToAsync(filestream);
                    return new Uri(string.Format("ms-appdata:///local/{0}.jpg", uniqueName), UriKind.Absolute);
                }
            }
        }
于 2012-08-01T17:06:20.220 に答える
1

XAMLを使用してこれを行うことができます。

OSはある程度のキャッシュを実行しますが、イメージが必要になるたびにキャッシュに保存されることを保証するものではありません。それを実現したい場合は、ローカルストレージに保存する必要があります。

于 2012-08-02T00:03:29.837 に答える