2013-10-11 59 views
0

我知道我可以使用Base64Encoded位圖 - 轉換爲位圖手動

string base64Encoded = ...; 
byte[] byteArray = Convert.FromBase64String(this.base64Encoded); // array size [31591] 

var memoryStream = new MemoryStream(byteArray); 
var bitmap = new Bitmap(memoryStream); 
//byte[,] im = new byte[a.Width*a.Height,3]; 
// array size [891998, 3] - why this array is 90 times bigger? 

,但我想這樣做手工。

我真正需要的是要知道我從ByteArray中如何創造3dim像素陣列[bitmap.width * bitmap.hight,3 {紅,綠,藍}]

+0

想要手動轉換爲位圖(即var bitmap = new Bitmap(memoryStream);)只查找此代碼,或者是否希望Convert.FromBase64String函數的轉換邏輯也是....... – dbw

回答

1

1- byteArray大小是不同的bitmap的大小,因爲bitmap實際上是一個沒有標題的未壓縮的24位圖像,但byteArray是一個壓縮(最有可能是RLE)的位圖文件。

2-您可以使用libbmp或其他圖像處理庫來加載和操作像素。這些庫在處理這類東西方面要好得多。

3-大多數位圖是使用RLE壓縮進行壓縮的,位圖是一種非常簡單的格式。您實際上可以編寫一個位圖閱讀器來將其讀取到位圖對象的字節數組intead。