2010-11-30 43 views
0
public byte[] PictureByteArray 
     { 
      get 
      { 
       //get a TypeConverter object for converting Bitmap to bytes 
       TypeConverter converter = TypeDescriptor.GetConverter(typeof(Bitmap)); 
       byte[] byteArr = (byte[])converter.ConvertTo(source, typeof(byte[])); 
       return byteArr; 
      } 
      set 
      { 
       source = new Bitmap(new MemoryStream(value)); 
      } 
     } 


    System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding(); 
      s = enc.GetString(bytes); 
+1

我不你認爲你可以在這裏使用一個屬性,因爲你希望該屬性接受字節數組並返回一個位圖。屬性必須獲取並設置相同的數據類型。你必須爲此做兩種方法。一個用於image->字節數組,另一個用於字節數組 - >圖像。 – 2010-11-30 08:49:49

回答

1

我通常使用這兩種方法用於將圖像轉印到Web服務時的圖像再次轉換成一個字節數組,和背面,例如,並再次返回檢索它:

public static byte[] ImageToByteArray(System.Drawing.Image imageIn) { 
    MemoryStream ms = new MemoryStream(); 
    Bitmap image = new Bitmap(imageIn); 
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); 
    return ms.ToArray(); 
} 

public static Image ByteArrayToImage(byte[] byteArray) { 
    MemoryStream ms = new MemoryStream(byteArray); 
    Image returnImage = Image.FromStream(ms); 
    return returnImage; 
} 
+0

順便說一句,我想你在ImageToByteArray中泄漏了一個位圖。保存後應該處理臨時位圖。 – N8allan 2015-06-02 18:47:04