2016-04-28 73 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(); 
    } 
}