5

मैंने विंडोज़.यूआई.एक्सएमएल.कंट्रोल इमेज को कैनवास पर जोड़ा है। मैं छवि डाउनलोड करने के लिए http कॉल करने के लिए HttpClient का उपयोग कर रहा हूं। मैं छवि को स्ट्रीम के रूप में प्राप्त कर रहा हूं और बिटमैप छवि वस्तु के स्रोत के रूप में जोड़ रहा हूं, लेकिन छवि लोड नहीं हुई है। किसी को भी मुझे बता सकते हैं कि मैं क्या कर रहा हूँ गलतसी # मेट्रो ऐप वेब से छवि को कैसे लोड करें

कोड:

 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; 
+1

डेस्कटॉप सिल्वरलाइट में, आप छवि को वांछित यूआरएल का स्रोत बना सकते हैं, और यह आपके लिए यह सब कुछ संभालेगा। क्या आप यहां भी ऐसा कर सकते हैं? –

उत्तर

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;     
+2

यह शायद इंटरनेट पर सबसे अच्छी बात है। मैंने लगभग स्थानीय स्टोरेज में फाइल को छोड़ दिया है और डाउनलोड किया है, जो मैं नहीं करना चाहता था। बहुत बहुत धन्यवाद! – jbkkd

+1

अभी भी तीन साल तक सहायक! धन्यवाद सिकमेश; मेरे लिए एक हफ्ते का मुद्दा हल किया ._ – iSofia

5

मेरा मानना ​​है कि यह काम करेगा:

myImage.Source = new BitmapImage(new Uri(imageUrl)); 
2

यहाँ एक कोड है झलकी मैं सफलतापूर्वक छवियों डाउनलोड करने के लिए उपयोग किया है कि वेब से यह छवि को स्थानीय भंडारण में प्रतिलिपि बनाता है और एक यूआरआई को नए (स्थानीय) स्थान पर लौटाता है।

ओएस कुछ कैशिंग करना होगा, लेकिन वह हर बार है कि आप छवि यह कैश में होगा की जरूरत है की गारंटी नहीं है कि यह:

 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); 
       } 
      } 
     } 
1

आपको लगता है कि XAML का उपयोग कर सकते हैं। यदि आप इसे प्राप्त करना चाहते हैं तो आपको इसे स्थानीय संग्रहण में सहेजने की आवश्यकता होगी।