Î÷Î÷Èí¼þÔ°¶àÖØ°²È«¼ì²âÏÂÔØÍøÕ¾¡¢ÖµµÃÐÅÀµµÄÈí¼þÏÂÔØÕ¾£¡
Î÷Î÷Ê×Ò³ ³£ÓÃÈí¼þ Èí¼þÏÂÔØ °²×¿Èí¼þ ÓÎÏ·ÏÂÔØ °²×¿ÓÎÏ· MACÓ¦Óà Çý¶¯ÏÂÔØ °²×¿µçÊÓ
ϵͳ¹¤¾ßÍøÂ繤¾ßýÌ幤¾ßͼÐÎͼÏñÁÄÌ칤¾ßÓ¦ÓÃÈí¼þ±à³Ì¿ª·¢ÊÖ»úÈí¼þ°²×¿Ó¦ÓõçÄÔ°²È«×ÖÌåËزÄ

BMP 24λͼת16λλͼµÄ³ÌÐò

ÂÌÉ«Ãâ·Ñ°æ
  • BMP 24λͼת16λλͼµÄ³ÌÐòÂÌÉ«Ãâ·Ñ°æ
  • Èí¼þ´óС:827KB
  • ¸üÐÂʱ¼ä:2015-05-27 17:24
  • Èí¼þÓïÑÔ:ÖÐÎÄ
  • Èí¼þ³§ÉÌ:
  • Èí¼þÀà±ð:¹ú²úÈí¼þ / Ãâ·ÑÈí¼þ / ±à³Ì¸¨Öú
  • Èí¼þµÈ¼¶:3¼¶
  • Ó¦ÓÃƽ̨:WinXP
  • ¹Ù·½ÍøÕ¾:http://www.cr173.com
¶¥ºÃÆÀ:50%
²È»µÆÀ:50%

×°»ú±Ø±¸Èí¼þ

Èí¼þ½éÉÜ

24λBMPͼƬת565¸ñʽ16λÊý×éCÎļþ´úÂ룬Éú³ÉµÄ´úÂëÓÃÓÚǶÈëʽ³ÌÐò´úÂëÖÐͼƬÎļþÏÔʾ£¬BMPͼƬÒÔÊý×éµÄÐÎʽ±£´æ²¢¶ÁÈ¡,½«24λλͼ¸ñʽת»»Îª16λλͼ¸ñʽµÄÔ´´úÂ룬°üÀ¨RGB555¸ñʽºÍRGB565¸ñʽ¡£

BMPλͼ32λתΪ24λÉî¶È

°ïÅóÓÑ×öÒ»¸öÊÓƵ²É¼¯ºÍ»ù±¾´¦Àí¹¦ÄÜ£¬ÒªÇóµÄÊÇ.bmp¸ñʽ

¼¸ÌìÏÂÀ´£¬Í¨¹ýdirectshow½øÐÐÊÓƵ²É¼¯£¬²¢×¥È¥Í¼Æ¬±£´æ£¬°´ÕÕÒªÇó½øÐÐÒµÎñ´¦Àí£¬ÒÔÇ°µÄ´¦Àí³ÌÐòÊÇ»ùÓÚRGB24

¶øÏÔʾÆ÷ÊÇ32λÕæ²ÊÉ«£¬ºóµ÷Õûdirectshow µÄgrab filter£¬ÐÞ¸ÄýÌåÀàÐÍ£¬pmt->majortype = MEDIATYPE_Video;
 pmt->subtype = MEDIASUBTYPE_RGB24; ½á¹ûÔÚÒµÎñÖÐЧ¹û²»ÀíÏ룬Ϊ¼È±£Áô32λͼ£¬Ò²Éú³Érgb24λͼ

Ó²Êǽ«BITMAPINFOHEADER *lpbi ÖеÄÖµ½øÐÐÇ¿ÐÐÉèÖÃlpbi->biBitCount = 24;

½á¹ûÊÇ£º²úÉúµÄͼƬ´øÓмä¶ÏÐԵIJÊÉ«ÌõÎÆ

È»ºóÔÙÔڹȸ衢°Ú¶ÉÖмÌÐøÓÎÓ¾£¬Ã»ÓÐʵÖÊÐÔ½øÕ¹

ÎÞÄΣ¬½ø΢Èímsdn¡¢gdi+...

½ÓÏÂÀ´µÄÁ½Ìì¾ÍÊǶñ²¹BMP֪ʶ£¬·¢ÏÖ²ÊÉ«ÌõÎÆÓ¦¸ÃÊÇRGB32λÑÕÉ«¿Õ¼äÖµ£¬¶ÔÓÚRGB32ÓëRGB24£¬ËüÃǵÄÏñËصã¿Õ¼äÖ»²îÁËÒ»¸ö×Ö½Ú£¬

¼Ì¶ø£¬×ÔÐÐת»»Êý¾Ý

Ê×ÏÈÊÇ´ÓdirectshowÖлñȡͼÏñÊý¾Ý

Æä´ÎÊÇ£¬±£Áô»ñÈ¡Êý¾ÝµÄÎļþÍ·

È»ºóÊÇת»»Î»Í¼Êý¾ÝÄÚÈÝ£¬²¢½«ÄÚÈÝÁíÖÿռä

×îºóÉ趨BITMAPFILEHEADERÎļþÍ·£¬²¢Ð´Îļþ£¬

Ϊ±¸Íü£¬¾ßÌåʵÏÖÈçÏ£º

 TRY 
 {
 
  BYTE *buffer = NULL; 
  hr = m_pWindowsLessControl->GetCurrentImage(&buffer); //ÕâÀï m_pWindowsLessControlΪIVMRWindowlessControl£¬½øÐÐͼÏñץȡ;
  if (!SUCCEEDED(hr)) 
  {     
   return hr;
  }
 
  BITMAPFILEHEADER hdr;     
  BITMAPINFOHEADER *lpbi = (BITMAPINFOHEADER *)buffer; 
 
  //ÑÕÉ«¿Õ¼äת»»£¬Èç¹ûΪ32λλͼ£¬×ª»»Îª24
  DWORD dwSize24 = 0;
  DWORD dwSize32 = lpbi->biSizeImage;
  dwSize24 = (dwSize32*3)/4;   //RGB32ÓëRGB24µÄÏñËصã¿Õ¼ä²îÒ»¸ö×Ö½Ú
  BYTE* pImg24 = new BYTE[dwSize24]; //´æ·ÅRGB24´æ´¢¿Õ¼ä
  BYTE* pImg24Temp = pImg24;//É趨ÁÙʱָÕ룬ºóÐø½øÐÐÊý¾Ý¹ÜÀí
  BYTE* pImg32 = buffer + sizeof(BITMAPINFOHEADER);//Ìø¹ýÎļþÍ·£¬¶¨Î»µ½Êý¾Ý²¿·Ö
   bool isSize24 = false;
  if (lpbi->biBitCount==32)
  {
   isSize24 = true;
   for (DWORD index=0; index<dwSize32/4; index++)
   {
    unsigned char r = *(pImg32++);
    unsigned char g = *(pImg32++);
    unsigned char b = *(pImg32++);
    pImg32++;    //Ìø¹ýÑÕÉ«¿Õ¼äalpha·ÖÁ¿£¬ÊµÏÖת»»
    *(pImg24++) = r;
    *(pImg24++) = g;
    *(pImg24++) = b;   //¸³Öµ
   }
   //½«Ö¸ÕëÖ¸ÏòеĿؼþ
   
     lpbi->biBitCount = 24;//Ç¿ÐÐÖ¸¶¨
    }
  
  int nColors = 1 << lpbi->biBitCount;   //°´ÕÕÉ趨Éî¶È£¬½øÐÐÑÕÉ«¼ÆËã  
  
  if (nColors > 256)         
   nColors = 0;      
  hdr.bfType = ((WORD)('M' << 8) | 'B'); // Ö¸¶¨BMP

//½øÐÐÎļþÍ·ÉèÖà   
  hdr.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + nColors * sizeof(RGBQUAD) + lpbi->biSizeImage;    
  hdr.bfReserved1 = 0;     
  hdr.bfReserved2 = 0;     
  hdr.bfOffBits = (DWORD)(sizeof(BITMAPFILEHEADER) + lpbi->biSize + nColors * sizeof(RGBQUAD));  

//½øÐÐλͼдÈë    
  FILE *bmpFile = NULL;     
  bmpFile = fopen((LPCTSTR)szFile, "wb");//szFileΪÎļþÃû     
  if (bmpFile != NULL)     
  {         
   fwrite(&hdr, 1, sizeof(BITMAPFILEHEADER), bmpFile);//λͼÎļþÍ·         
   fwrite(buffer, 1, sizeof(BITMAPINFOHEADER), bmpFile);//λͼÐÅϢͷ

   if (!isSize24)
   {
    fwrite(buffer+sizeof(BITMAPINFOHEADER), 1, nColors * sizeof(RGBQUAD), bmpFile);//ÑÕÉ«±í         
    fwrite(buffer+sizeof(BITMAPINFOHEADER)+nColors * sizeof(RGBQUAD), 1, lpbi->biSizeImage, bmpFile);//λͼÊý¾Ý     
   }
   else
   {
    fwrite(pImg24Temp,1,dwSize24,bmpFile);
   }

  }     
  fclose(bmpFile);      
  CoTaskMemFree(buffer);//ÊÍ·Å×ÊÔ´
  delete pImg24Temp; 
  return hr;
 }
 CATCH (CMemoryException, e)
 {
  
 }
 END_CATCH
 }

 ÕÛÌÚÁËÁ½Ì죬Õæ·Ñ¾¢£¬Ìش˼Ǽһϱ¸Íü

Èí¼þ±êÇ©: 24λͼת16λ

°ÑÈí¼þÔËÐÐȷʵµÄ¿â²¹È«ÁË£¬ÐèÒª°Ñ¿âmfco42d.dll¡¢msvcrtd.dll¸´ÖƵ½C:\Windows\System32

    ÆäËû°æ±¾ÏÂÔØ

    ·¢±íÆÀÂÛ

    êdzÆ:
    ±íÇé: ¸ßÐË ¿É º¹ ÎÒ²»Òª º¦Ðß ºÃ ÏÂÏÂÏ ËÍ»¨ ʺ Ç×Ç×

    ÏÂÔØ°ïÖúÏÂÔØ°ïÖúÎ÷Î÷Æƽâ°æÈí¼þ¾ùÀ´×Ô»¥ÁªÍø, ÈçÓÐÇÖ·¸ÄúµÄ°æȨ, ÇëÓëÎÒÃÇÁªÏµ¡£

    TOP
    Èí¼þÏÂÔØ