将ByteArray转换为png图像并将其添加到Xamarin.Android中的ImageView

时间:2018-03-14 10:25:45

标签: c# android xamarin.forms xamarin.android

我有Image ByteArray并希望将字节数组转换为png图像并添加ImageView,如下面的代码所示。

 byte[] imageBytes =  webClient.DownloadDataTaskAsync(uri);


 ImageView view = new ImageView(this.Context);

  //Here need to add the converted image into ImageView
  view.SetImageSource();

我通过将ImageBytes转换为位图并在ImageView中添加位图来实现这一目标。但它有一些记忆问题。由于我在源代码中经常添加更多次数,因为内存异常,我无法在ImageView中添加位图。

所以请帮助我。

感谢。

2 个答案:

答案 0 :(得分:2)

它应该像调用

一样简单
var bitmap = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);

Android.Graphics.BitmapFactory.DecodeByteArray Method

  

从指定的字节数组中解码不可变的位图。

     

<强>参数

     
      
  • 数据      
        
    • 压缩图像数据的字节数组
    •   
  •   
  • 偏移      
        
    • 偏移到imageData,解码器应该开始解析。
    •   
  •   
  • 长度      
        
    • 从offset开始到解析
    • 的字节数   
  •   
  • OPTS      
        
    • 空行;控制下采样的选项以及图像是否应该被完全解码,或仅返回大小。
    •   
  •   

答案 1 :(得分:1)

你可以通过从Stream创建位图来做到这一点:

using(var ms = new MemoryStream(imageBytes))
{
    var bitmap = BitmapFactory.DecodeStream(ms);
    // ...
    // rest of your logic here...
    // ...
}

希望这有帮助