2012-02-28 135 views
1

好吧,我一整天都在這個問題上討論這個問題。試圖弄清楚如何將位圖從canvas轉換爲1bpp(位/像素)Android中的位圖文件並將其物理保存。在Android中創建一個1bpp(位/像素)位圖

到目前爲止,我已經迭代了位圖,並將結果像素值的int []創建爲1或0。但是,我的下一個問題是我該怎麼做?

我試圖做的是像

 int[] bits = // populated earlier 

     byte[] bmp = new byte[bits.length/8]; 

     int byteindex = 0; 
     int bitindex = 0; 
     for (int i=0; i<bits.length; i++) { 
      if (bits[i] == 1) 
       // set to 1 
      else 
       // set to 0 
      if (bitindex++ == 8) { 
       bitindex = 0; 
       byteindex++; 
      } 
     } 

     OutputStream out = new FileOutputStream("/mnt/sdcard/dynbmp.bmp"); 
     out.write(bmp); 
     out.close(); 

我得到一個文件出來,但它顯然不是一個有效的bmp文件。誰知道它是什麼。你不得不原諒我缺乏位字節和圖像知識,但我在哪裏搞砸了?我的想法完全錯了嗎?我是否缺少一些標題信息或什麼?

+0

,您對Android的側蓋。現在,閱讀有關BMP文件結構,併爲您的數據重現它。這不僅僅是文件中的字節混亂。 http://en.wikipedia.org/wiki/BMP_file_format – 2012-02-28 05:31:00

回答

0

是的,你錯過了幾件事情。這是更復雜一點...看看這裏:

http://en.wikipedia.org/wiki/BMP_file_format

+0

嗯我覺得我已經疲憊了一下我的大腦,只是希望它會奇蹟般地工作。我得看一下它。 – dispake 2012-02-28 06:04:11