Áú¹®°ú ´äº¯

c++ ºñÆ®¸Ê ÆÄÀϱ¸Á¶ ¹®Àǵ帳´Ï´Ù ³¯Â¥:2020-2-17 4:33:03 Á¶È¸¼ö:15364
ÀÛ¼ºÀÚ : µ¿·¡°¨ÀÚ
Æ÷ÀÎÆ® : 8
°¡ÀÔÀÏ : 2020-02-17 16:29:32
¹æ¹®È½¼ö : 3
±Û 1°³, ´ñ±Û 2°³
¼Ò°³ :
ÀÛ¼º±Û º¸±â
ÂÊÁö º¸³»±â
¾È³çÇϼ¼¿ä
 c++·Î ºñÆ®¸Ê ÆÄÀÏÀ» Àо È­¸é¿¡ »Ñ·Áº¸·Á°í ÇÕ´Ï´Ù.

ºñÆ®¸Ê Çü½ÄÁß
RGB555 RGB565 ARGB4444 µîµîµî....¿©·¯ Æ÷¸ËÀÌ Á¸ÀçÇÏ´øµ¥

ÀÌ Á¤º¸´Â ºñÆ®¸Ê ¾îµð¸¦ ±îºÁ¾ß ¾Ë¼ö ÀÖÀ»±î¿ä?

BitmapFileHeader, BitmapInfoHeader ºñÆ®¸Ê ±¸Á¶Ã¼ Á¤º¸·Î´Â ¾Ë ¼ö ¾øÀ»±î¿ä? 403 Forbidden403 Forbidden

¸ñ·Ïº¸±â »èÁ¦ ¼öÁ¤ ½Å°í ½ºÅ©·¦

¼Ò¿£ 2¿ù18ÀÏ 6:25:21  

BITMAPINFOHEADER ±¸Á¶Ã¼ÀÇ biBitCount ¸â¹ö´Â Çȼ¿ Çϳª´ç ÇÒ´çµÈ ºñÆ®¼öÀ̸é ÀÌ °ª¿¡ µû¶ó »ö»ó¼ö°¡ °áÁ¤µË´Ï´Ù. 1À̸é Èæ¹éÀ̰í 4À̸é 2ÀÇ 4½Â°³ÀÎ 16»ö»óÀ» Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. biBitCount°¡ 8ÀÌ¸é ÆÈ·¹Æ®¸¦ »ç¿ëÇÏ´Â 256»ö»óÀ̸ç 16À̸é RGB555 ¹æ½ÄÀÇ 15ºñÆ® »ö»óÀÌµÇ BMP ÆÄÀÏÀº ÀÌ Æ÷¸ËÀ¸·Î µÇ¾î ÀÖ´Â ¿¹°¡ °ÅÀÇ ¾ø½À´Ï´Ù. ¿äÁòÀº ÀÌ·± ºñÆ®¸ÊÀÌ µå¹°°í º¸ÅëÀº 24ºñÆ®³ª 32ºñÆ®ÀÇ Æ®·çÄ÷¯·Î µÇ¾î ÀÖ½À´Ï´Ù. ºñÆ®¸ÊÀ» Àд´ٴ °ÍÀº °á±¹ È­¸é¿¡ Ãâ·ÂÇϱâ À§Çؼ­Àε¥ À̶§´Â ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.

int SetDIBitsToDevice(HDC hdc, int XDest, int YDest, DWORD dwWidth, DWORD dwHeight, int XSrc, int YSrc, UINT uStartScan, UINT cScanLines, CONST VOID *lpvBits, CONST BITMAPINFO *lpbmi, UINT fuColorUse);

ÀÌ ÇÔ¼öÀÇ Á¦ÀÏ ¸¶Áö¸· Àμö fuColorUse´Â ºñÆ®¸Ê ·¡½ºÅÍ µ¥ÀÌÅͰ¡ ÆÈ·¹Æ®ÀÏ ¶§ DIB_PAL_COLORS·Î ÁöÁ¤ÇÏ°í »ö»ó°ªÀÏ ¶§ DIB_RGB_COLORS¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ³ª¸ÓÁö Æ÷¸Ë ºÐ¼®Àº ÀÌ ÇÔ¼ö ³»ºÎ¿¡¼­ »ö»ó¼ö¸¦ Á¶»çÇÏ¿© ÀÚµ¿À¸·Î °áÁ¤ÇÕ´Ï´Ù. DIB¸¦ DDB·Î º¯È¯ÇÒ ¶§´Â ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.

HBITMAP CreateDIBitmap( HDC hdc, CONST BITMAPINFOHEADER *lpbmih, DWORD fdwInit, CONST VOID *lpbInit, CONST BITMAPINFO *lpbmi, UINT fuUsage );

ºñÆ®¸Ê °ü·Ã ±¸Á¶Ã¼¿Í ·¡½ºÅÍ Á¤º¸°¡ Àü´ÞµÇ¸ç ¸¶Áö¸· Àμö fuUsage·Î ÀÌ ºñÆ®¸ÊÀÇ »ö»ó Æ÷¸ËÀ» ¾Ë·Á ÁÝ´Ï´Ù. ´ë°³ÀÇ °æ¿ì DIB_RGB_COLORS·Î Àü´ÞÇÏ¸é µË´Ï´Ù. ÀÌ·¸°Ô ¸¸µç ºñÆ®¸ÊÀ» BitBlt·Î Ãâ·ÂÇÕ´Ï´Ù. ÀÌ·± Æ÷¸Ë º¯È¯À» ½Å°æ¾²°í ½ÍÁö ¾Ê´Ù¸é ºñÆ®¸ÊÀ» ¸®¼Ò½º·Î Æ÷ÇÔ½Ã۰í LoadBitmapÀ¸·Î Àоî BitBlt·Î Ãâ·ÂÇÏ¸é µÇ°í¿ä.

µ¿·¡°¨ÀÚ 2¿ù18ÀÏ 10:19:18  

´äº¯°¨»çµå¸³´Ï´Ù

SetDIBitsToDevice ÇÔ¼ö´Â À©µµ¿ì APIÀÎ°Í °°´õ¶ó±¸¿ä
ÇöÀç ¸®´ª½º ±â¹ÝÀ¸·Î °³¹ß ÁßÀÔ´Ï´Ù.

¼Ò½ºÄڵ带 ¿Ã¸®ÀÚ¸é

            FILE* fp;
            fp = fopen(filename,"rb");
            if(fp == NULL)
            {
                DP_ERR("File Open Error\n");
                fclose(fp);
            }

            fread(&hf, sizeof(BitmapFileHeader), 1, fp);
            fread(&ih, sizeof(BitmapInfoHeader), 1, fp);

            long int width = ih.width;
            long int height = ih.height;
            int size = ih.sizeimage;

            unsigned short* image;

            image = (unsigned short*)malloc(size);
            fseek(fp, hf.offbits, SEEK_SET);
            fread(image, size, 1, fp);

image¶ó´Â º¯¼ö¿¡ FILE·Î ¿ÀÇÂÇÏ¿© offbits±îÁö seek¸¦ ÇÑ »óȲÀÔ´Ï´Ù. imageÀÇ ÇöÀçÁÖ¼Ò´Â ºñÆ®¸Ê À̹ÌÁö¿¡ °üÇÑ Á¤º¸°¡ ½ÃÀ۵Ǵ ÁÖ¼Ò·Î ¾Ë°íÀÖ½À´Ï´Ù.

¿©±â±îÁö Á¤º¸·Î´Â ÀÌ ÆÄÀÏÀÌ RGB555 ÀÎÁö ARGB8888 ÀÎÁö µîµî.. ¾Ë¼ö¾øÀ»±î¿ä? »ç¿ëµÇ´Â ºñÆ®¸Ê ÆÄÀÏÀº 16, 24 bitcoutµî ´Ù¾çÇÏ°Ô ÀÖ½À´Ï´Ù. 


·Î±×ÀÎÇÏ¼Å¾ß ´ñ±ÛÀ» ´Þ ¼ö ÀÖ½À´Ï´Ù.