【问题标题】:How to get image from HTTP URL in Windows Phone?如何从 Windows Phone 中的 HTTP URL 获取图像?
【发布时间】:2014-04-07 21:18:59
【问题描述】:

如何从 http url 获取图片,我的 url 是这样的:

"http://accd.com/abc.htm",

我如何从中获取图像?

【问题讨论】:

  • 您的图片在 html 中?
  • 是的,我的图像类型将是 Base64
  • 如果你的图片是一个url,只要把图片像。它的作品。
  • 嘿嘿,我一加评论就删了。
  • @MatDev8 我的图片不是url,而是来自http url,所以如何调用该url,作为响应,我的图片将是Base64,那么如何调用它?

标签: http c#-4.0 windows-phone-8


【解决方案1】:

所以

public static BitmapImage Base64StringToBitmap(string source)
    {
        var ims = new InMemoryRandomAccessStream();
        var bytes = Convert.FromBase64String(source);
        var dataWriter = new DataWriter(ims);
        dataWriter.WriteBytes(bytes);
        dataWriter.StoreAsync();
        ims.Seek(0);
        var img = new BitmapImage();
        img.SetSource(ims);
        return img;
    }

【讨论】:

    【解决方案2】:

    您可以像这样使用网络客户端:

        var webClient = new WebClient();
        webClient.DownloadStringAsync(new Uri("http://accd.com/abc.htm"));
        webClient.DownloadStringCompleted += (sender, eventArgs) => (eventArgs.Result); //Here is your base 64 image code, you can use the Base64StringToBitmap function
    

    【讨论】:

      【解决方案3】:

      可能需要使用网络客户端

       WebClient wc = new WebClient();  
       wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);  
       wc.OpenReadAsync(new Uri("your http url"), wc);  
      
       void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
              {
                  try
                  {
                      BitmapImage bitmapImage = new BitmapImage();
                      bitmapImage.SetSource(e.Result);
                      imgLogoData.Source = bitmapImage;
                      imgLogoData.Height = 200;
                  }
                  catch (Exception ex)
                  {
                      MessageBox.Show(AppResources.resErrorOccured);
                      ExceptionHelper.WriteLog(ex);
                  }
              }
      

      将 Base64 字符串转换为 BitmapImage 只需遵循此方法

      public static BitmapImage base64image(string base64string)
          {
              byte[] fileBytes = Convert.FromBase64String(base64string);
      
              using (MemoryStream ms = new MemoryStream(fileBytes, 0, fileBytes.Length))
              {
                  ms.Write(fileBytes, 0, fileBytes.Length);
                  BitmapImage bitmapImage = new BitmapImage();
                  bitmapImage.SetSource(ms);
                  return bitmapImage;
              }
          }
      

      因此,对于像这样在 xaml 中声明的图像

      将图像添加到您的 XAML,例如:

      <Image x:Name="imgLogoData" Height="50" Width="50" />
      

      然后您可以设置源,如下所示:

      imgLogoData.Source = base64image(yourBase64string);
      

      【讨论】:

      • 非常感谢兄弟但是我应该在XAML页面中写什么来绑定图像
      • 而我的图像类型响应是Base64,那么如何在上面的方法中转换呢?
      • imgLogoData 是您应在 xaml 中声明的图像控件
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多