ÀÌ ºÎºÐÀº ¾Èµå·ÎÀ̵带 ¹ÙÅÁÀ¸·Î ¿µ»ó󸮸¦ ½ÃµµÇÏ½Ç ºÐ¿¡°Ô À¯¿ëÇÑ ÀÚ·á¶ó°í »ý°¢µì´Ï´Ù. ±âÁ¸ÀÇ ¿µ»ó󸮴 C±â¹ÝÀÌ¿´°í, ¾Èµå·ÎÀ̵忡¼ ¿µ»ó󸮸¦ ±¸ÇöÇϱâ À§Çؼ´Â java±â¹Ý¿¡¼ ó¸®ÇÏ¿©¾ß ÇϹǷΠÀ¥»ó¿¡¼µµ ÀÚ·á°¡ ¸¹ÀÌ ºÎÁ·Çϸ®¶ó »ý°¢µì´Ï´Ù.
ÀÌ °Á¿¡¼ ±Ã±¹ÀûÀ¸·Î ÇÏ°íÀÚ ÇÏ´Â °ÍÀº BitmapÀ» Çȼ¿´ÜÀ§ÀÇ (A)RGB°ªÀ¸·Î ºÐÇØÇÏ°í, ºÐÇØÇÑ (A)RGB¸¦ ´Ù½Ã BitmapÀ¸·Î Á¶ÇÕÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ºÎºÐÀ» °³³äÀûÀ¸·Î ¼³¸íÇغ¸¾Ò½À´Ï´Ù.
1. Bitmap °´Ã¼¿¡¼ Çȼ¿´ÜÀ§ ¿µ»óÀ» »©´Â ¹æ¹ý
- ¿µ»óÁ¤º¸¸¦ °¡Áø Bitmap Ŭ·¡½ºÀÇ bit °´Ã¼°¡ ÀÖ½À´Ï´Ù.
- bit Å©±â ¸¸ÅÀÇ int ¹è¿ pixels[][]¸¦ ¼±¾ðÇÕ´Ï´Ù.
int [][] pixels = new int [bit.getHeight()][bit.getWidth()];
- bit¸¦ ¹è¿·Î »©ÁÝ´Ï´Ù.
for(int i=0; i<bit.getHeight(); i++)
{
for(int j=0; j<bit.getWidth();j++)
{
pixels[i][j]=bit.getpixel(j,i);
}
}
2. À§¿¡ ÃßÃâÇÑ Çȼ¿°ªµéÀ» RGB·Î ³ª´«´Ù
-¾Èµå·ÎÀ̵å Bitmap¿¡¼ ÃßÃâÇÑ int ÇüÀÇ Çȼ¿Á¤º¸´Â Alpha Red Green Blue °¢ °¢ 1¹ÙÀÌÆ®¾¿ 4¹ÙÀÌÆ®·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù.(Âü°í·Î Alpha°ªÀº ´ëºÎºÐ default°ªÀ¸·Î ff Áï 255·Î ÃʱâÈ µÇ¾î ÀÖ½À´Ï´Ù.)
-±×·¸±â ¶§¹®¿¡ ¾ËÆÄ°ªÀº ³ªÁß¿¡¼ ¹è¿¿¡¼ ºñÆ®¸ÊÀ¸·Î ³Ñ°ÜÁÙ ¶§¸¸ »ç¿ëÇÕ´Ï´Ù.
-¿µ»ó󸮿¡´Â RGB°ª¸¸ ÀÖÀ¸¸é µÇ¹Ç·Î À̵éÀ» ÃßÃâÇØ º¸°Ú½À´Ï´Ù.
int red= (pixels[i][j]&0xff0000)/0x10000;
int green= (pixels[i][j]&0xff00)/0x100;
int blue= pixels[i][j]&0xff;
-ÀÌÁ¦ ¿ì¸®´Â red green blue ¸¸À» ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
3. ¹è¿°ªÀ¸·Î ´Ù½Ã Bitmap À» ±¸¼ºÇÑ´Ù.
- ¶È°°ÀÌ ¹Ý´ë·Î ÇÏ¸é µÇ°Ú½À´Ï´Ù.
int newPixels[]=ff*0x1000000+red*0x10000+green*0x100+blue;
Bitmap newbit=Bitmap.createBitmap(newPixels,0,bit.getWidth(),bit.getWidth(),bit.getHeight(), Bitmap.Config.RGB_565);
4. Âü°í»çÇ×
ÀϹÝÀûÀ¸·Î C°è¿¿¡¼´Â ¿µ»ó¹è¿À» unsigned char ¶Ç´Â byte ÇüÀ¸·Î ´ã¾Ò½À´Ï´Ù. ÇÏÁö¸¸ java±âº»ÀûÀ¸·Î int ÇüÀ¸·Î ó¸®ÇÏ´Â °Í °°½À´Ï´Ù. ÇÁ·Î±×·¥ÀÇ ¸®¼Ò½º¹®Á¦¶§¹®¿¡ byteÇüÀÌ ´õ ÀûÇÕÇÏ´Ù°í »ý°¢µì´Ï´Ù. ±Ùµ¥ int¸¦ byteÇüÀ¸·Î ¿Å±â´Ï±î Á¦´ë·Î ¾È µÇ´Â °Í °°´õ¶ó±¸¿ä. Á» ´õ ¿¬±¸Çؼ º¸ÃæÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù. Ȥ½Ã Á¦°¡ ¼³¸íÀÌ ºÎÁ·ÇÒ ¼ö ÀÖÀ¸´Ï, ±Ã±ÝÇϽŠÁ¡ÀÌ ÀÖÀ¸½Å ºÐ ÄÚ¸àÆ® ºÎŹµå¸³´Ï´Ù.
5. ¼Ò½º
÷ºÎÇÑ ¼Ò½º´Â ¿µ»óÀ» ¹Þ¾Æ¿Í¼ RGB·Î ºÐÇØÇÑ ÈÄ ¹ÝÀü½ÃÄÑ ºñÆ®¸ÊÀ¸·Î ¸¸µé¾î ¿µ»óÀ» »Ñ·ÁÁÖ´Â ¼Ò½ºÀÔ´Ï´Ù. °øºÎÇÏ½Ç ¶§ Âü°íÇϽñ⠹ٶø´Ï´Ù.