2012-02-23 111 views
1

位圖我有以下幾點:創建一個從二進制數據

byte[] pixels = new byte[28] { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00 }; 

這是一個顛倒的感嘆號像這樣:

0x00, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x00, 0x00, 
0x00, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x00, 0x00 

其中二進制是:

00000000 00000000 
00110000 00000000 
00110000 00000000 
00000000 00000000 
00000000 00000000 
00110000 00000000 
00110000 00000000 
00110000 00000000 
00110000 00000000 
00110000 00000000 
00110000 00000000 
00110000 00000000 
00110000 00000000 
00000000 00000000 

我需要將其轉換爲位圖/創建位圖。所以感嘆號是白色的,背景是黑色的。我需要能夠爲像素着色。

如何做到這一點??

回答

3

假設所有的圖像是16x14

Bitmap bmp = new Bitmap(16, 14); 
int line=0; 

for (int i = 0; i < pixels.Length; i++) 
{ 
    for (int j = 0; j<8; j++) 
    { 
     if (((pixels[i] >> j) & 1) == 1) 
     { 
      bmp.SetPixel((i%2)*8 + 7-j, line, Color.Black); 
     } 
    } 
    if(i%2==1) line++; 
} 
+0

謝謝 - 它的工作原理! – 2012-02-23 14:20:24

0

考慮閱讀Wikipedia about BMP format。你將需要這個來確保你的數組包含必要的元數據(例如寬度和高度)。進行這些更改後,您可以使用類似這樣

public static Bitmap ToBitmap(byte[] byteArray) 
{ 
    using (var ms = new MemoryStream(byteArray)) 
    { 
    var img = (Bitmap)Image.FromStream(ms); 
    return img; 
    } 
} 
+2

參數不是在這條線有效的例外:VAR IMG =(位圖)Image.FromStream(MS); – 2012-02-23 13:35:59

0

從我個人理解,你想創建一個位圖,它類似於您的字節數組(您的「感嘆號」)裏面有什麼。

您可以從零開始創建位圖,並使用一些循環,只需在Bitmap中設置像素即可。下面是一個簡單的例子,在黑色背景上繪製隨機白色像素。與之相適應,以滿足您的要求:

Bitmap zz = new Bitmap(100, 100); 

using (Graphics g = Graphics.FromImage(zz)) 
{ 
    // Draws a black background 
    g.Clear(Color.Black); 
} 

Random rnd = new Random(); 
for (int i = 0; i < zz.Height; i++) 
{ 
    for (int j = 0; j < zz.Width; j++) 
    { 
     // Randomly add white pixels 
     if (rnd.NextDouble() > 0.5) 
     { 
      zz.SetPixel(i, j, Color.White); 
     } 
    } 
} 

zz.Save(@"C:\myfile.bmp", ImageFormat.Bmp); 
+0

我需要一個算法來糾正它。我有很多符號,不僅僅是這個符號,所以算法很重要。 用於繪製位圖,這是一個步驟。需要一個算法,雖然 – 2012-02-23 13:23:38