2012-02-28 3 views
1

좋아, 이렇게 하루 종일 내 뇌를 두드리고 있습니다. 비트 맵을 캔버스에서 1bpp (픽셀 당 비트) 비트 맵 파일로 변환하여 안드로이드에서 어떻게 물리적으로 저장할 수 있는지 알아 내려고합니다.안드로이드에서 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

당신이 덮여 안드로이드면을했습니다. 이제 BMP 파일 구조에 대해 읽고 데이터 용으로 재현하십시오. 파일의 바이트 혼란이 아닙니다. http://en.wikipedia.org/wiki/BMP_file_format –

답변

0

예, 몇 가지 사항이 누락되었습니다. 그것은 조금 더 복잡 ... 여기 봐 :

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

+0

흠 나는 내 머리를 조금 어지럽 혔고 마술처럼 작동하기를 바랐다. 나는 그것을 조금 읽어야 할 것이다. – dispake

관련 문제