2016-04-28 40 views
2

理想情况下想这样做Xamarin的Android为System.Drawing.Image替代

AssetManager assets = this.Assets; 
using (StreamReader sr = new StreamReader(assets.Open("test.png"))) 
{ 
    var img = System.Drawing.Image.FromStream(sr.BaseStream);   
} 

System.Drawing.Image class不与Xamarin的Android存在。 我怎样才能达到上述目的?

回答

3

我发现了一种替代方法来克服缺失的System.Drawing.Image

我已经使用了以下内容:

using (StreamReader sr = new StreamReader(assets.Open("test.png"))) 
{ 
    BinaryReader binreader = new BinaryReader(sr.BaseStream); 
    var allData = ReadAllBytes(binreader); 
    Bitmap bitmap = BitmapFactory.DecodeByteArray(allData, 0, allData.Length); 
    imageView.SetImageBitmap(bitmap); 
} 

public static byte[] ReadAllBytes(BinaryReader reader) 
{ 
    const int bufferSize = 4096; 
    using (var ms = new MemoryStream()) 
    { 
     byte[] buffer = new byte[bufferSize]; 
     int count; 
     while ((count = reader.Read(buffer, 0, buffer.Length)) != 0) 
      ms.Write(buffer, 0, count); 
     return ms.ToArray(); 
    } 
}