IT_Programming/Android_Java

[펌] Bitmap 을 배열로 배열을 Bitmap 으로...

JJun ™ 2014. 3. 25. 11:32

 


 

 출처: http://xiangxiang.tistory.com/entry/안드로이드-영상처리의-기본-Bitmap-을-배열로-배열을-Bitmap-으로


 

 

 

1. Bitmap 객체에서 픽셀단위 영상을 빼는 방법
   
  -  영상정보를 가진 Bitmap 클래스의 bit 객체가 있습니다.
  -  bit 크기 만큼의 int 배열 pixels[][]를 선언합니다.    
  

     for(int i=0; i<bit.getHeight(); i++)

     {
          for(int j=0; j<bit.getWidth();j++)
          {
                      pixels[i][j]=bit.getpixel(j,i);    
           }
      }




 2. int 배열의 값을 RGB로 나눈다
    
    - 안드로이드 Bitmap에서 추출한 int 형의 픽셀정보는 Alpha Red Green Blue

       각각 1바이트씩 4바이트로 이루어져 있습니다.

       (참고로 Alpha값은 대부분 default값으로 ff 즉 255로 초기화 되어 있습니다.)
       그렇기 때문에 알파값은 나중에서 배열에서 비트맵으로 넘겨줄 때만 사용합니다. 
      
    - 영상처리에는 RGB값만 있으면 되므로 이들을 추출해 보겠습니다.
             int red= pixels[i][j]&0xff0000;
             int green= pixels[i][j]&0xff00;
             int blue= pixels[i][j]&0xff;
       
    - 이제 우리는 red green blue 만을 이용할 수 있습니다. 

 

 3. 배열값으로 다시 Bitmap 을 구성한다.
      
    - 똑같이 반대로 하면 되겠습니다.
       int newPixels[]= ff * 0x1000000 + red * 0x10000 + green * 0xff + blue;
       Bitmap newbit = Bitmap.createBitmap(newPixels, 0, bit.getWidth(), bit.getWidth(), bit.getHeight()

                                        , Bitmap.Config.RGB_565);