亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dibapi.cpp

?? 該程序實現了jpeg編碼。開發平臺:Window XP
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
 
    // alloc memory block to store our bitmap 
 
    hDIB = GlobalAlloc(GHND, dwLen); 
 
    // if we couldn't get memory block 
 
    if (!hDIB) 
    { 
      // clean up and return NULL 
 
      SelectPalette(hDC, hPal, TRUE); 
      RealizePalette(hDC); 
      ReleaseDC(NULL, hDC); 
      return NULL; 
    } 
 
    // lock memory and get pointer to it 
 
    lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDIB); 
 
    /// use our bitmap info. to fill BITMAPINFOHEADER 
 
    *lpbi = bi; 
 
    // call GetDIBits with a NULL lpBits param, so it will calculate the 
    // biSizeImage field for us     
 
    GetDIBits(hDC, hBitmap, 0, (UINT)bi.biHeight, NULL, (LPBITMAPINFO)lpbi, 
        DIB_RGB_COLORS); 
 
    // get the info. returned by GetDIBits and unlock memory block 
 
    bi = *lpbi; 
    GlobalUnlock(hDIB); 
 
    // if the driver did not fill in the biSizeImage field, make one up  
    if (bi.biSizeImage == 0) 
        bi.biSizeImage = WIDTHBYTES((DWORD)bm.bmWidth * biBits) * bm.bmHeight; 
 
    // realloc the buffer big enough to hold all the bits 
 
    dwLen = bi.biSize + PaletteSize((LPBYTE)&bi) + bi.biSizeImage; 
 
    if (h = GlobalReAlloc(hDIB, dwLen, 0)) 
        hDIB = h; 
    else 
    { 
        // clean up and return NULL 
 
        GlobalFree(hDIB); 
        hDIB = NULL; 
        SelectPalette(hDC, hPal, TRUE); 
        RealizePalette(hDC); 
        ReleaseDC(NULL, hDC); 
        return NULL; 
    } 
 
    // lock memory block and get pointer to it */ 
 
    lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDIB); 
 
    // call GetDIBits with a NON-NULL lpBits param, and actualy get the 
    // bits this time 
 
    if (GetDIBits(hDC, hBitmap, 0, (UINT)bi.biHeight, (LPBYTE)lpbi + 
            (WORD)lpbi->biSize + PaletteSize((LPBYTE)lpbi), (LPBITMAPINFO)lpbi, 
            DIB_RGB_COLORS) == 0) 
    { 
        // clean up and return NULL 
 
        GlobalUnlock(hDIB); 
        hDIB = NULL; 
        SelectPalette(hDC, hPal, TRUE); 
        RealizePalette(hDC); 
        ReleaseDC(NULL, hDC); 
        return NULL; 
    } 
 
    bi = *lpbi; 
 
    // clean up  
    GlobalUnlock(hDIB); 
    SelectPalette(hDC, hPal, TRUE); 
    RealizePalette(hDC); 
    ReleaseDC(NULL, hDC); 
 
    // return handle to the DIB 
    return hDIB; 
} 
 
/************************************************************************* 
 * 
 * BitmapToDIB() 
 * 
 * Parameters: 
 * 
 * HBITMAP hBitmap  - specifies the bitmap to convert 
 * 
 * HPALETTE hPal    - specifies the palette to use with the bitmap 
 * 
 * WORD wBitCount   - specifies the DIB colorbits 
 *
 * Return Value: 
 * 
 * HDIB             - identifies the device-dependent bitmap 
 * 
 * Description: 
 * 
 * This function creates a DIB from a bitmap using the specified palette. 
 * 
 ************************************************************************/ 
HDIB BitmapToDIB(HBITMAP hBitmap, HPALETTE hPalette, WORD wBitCount)
{ 
	HDIB hNewDib;

	if (! hBitmap)
        return NULL; 

	// get bitmap info
	BITMAP  bm;         // bitmap structure 
	GetObject(hBitmap, sizeof(bm), (LPBYTE)&bm); 
	int biBits = bm.bmPlanes * bm.bmBitsPixel;
	// make sure bits per pixel is valid 
	if (biBits <= 1) 
		biBits = 1; 
	else if (biBits <= 4) 
		biBits = 4; 
	else if (biBits <= 8) 
		biBits = 8; 
	else // if greater than 8-bit, force to 24-bit 
		biBits = 24; 

	// get DIB handle from current bitmap
	HDIB hDib = BitmapToDIB(hBitmap, hPalette);
	if (! hDib)
        return NULL; 

	if (wBitCount == biBits)
		hNewDib = hDib;
	else
	{
	    // DIB bits/pixel is not the same as device
		// convert dib format to accordingly
		hNewDib = ConvertDIBFormat(hDib, wBitCount, hPalette);
		// cleanup hDib
		GlobalFree(hDib);
	}

	return hNewDib;
} 


/************************************************************************* 
 * 
 * ChangeBitmapFormat() 
 * 
 * Parameter: 
 * 
 * HBITMAP          - handle to a bitmap 
 * 
 * WORD             - desired bits per pixel 
 * 
 * DWORD            - desired compression format 
 * 
 * HPALETTE         - handle to palette 
 * 
 * Return Value: 
 * 
 * HDIB             - handle to the new DIB if successful, else NULL 
 * 
 * Description: 
 * 
 * This function will convert a bitmap to the specified bits per pixel 
 * and compression format. The bitmap and it's palette will remain 
 * after calling this function. 
 * 
 ************************************************************************/ 
HDIB ChangeBitmapFormat (HBITMAP hbm, WORD biBits, DWORD biCompression, HPALETTE hpal)
{
    BITMAP               bm;
    BITMAPINFOHEADER     bi;
    LPBITMAPINFOHEADER   lpbi;
    DWORD                dwLen;
    HANDLE               hdib;
    HANDLE               h;
    HDC                  hdc;

    if (!hbm)
        return NULL;

    if (hpal == NULL)
        hpal = (HPALETTE)GetStockObject(DEFAULT_PALETTE);

    GetObject(hbm,sizeof(bm),(LPBYTE)&bm);

    if (biBits == 0)
	{
        biBits =  bm.bmPlanes * bm.bmBitsPixel;

		// make sure bits per pixel is valid 
	    if (biBits <= 1) 
		    biBits = 1; 
	    else if (biBits <= 4) 
		    biBits = 4; 
	    else if (biBits <= 8) 
		    biBits = 8; 
		else // if greater than 8-bit, force to 24-bit 
			biBits = 24; 
	}

    bi.biSize               = sizeof(BITMAPINFOHEADER);
    bi.biWidth              = bm.bmWidth;
    bi.biHeight             = bm.bmHeight;
    bi.biPlanes             = 1;
    bi.biBitCount           = biBits;
    bi.biCompression        = biCompression;
    bi.biSizeImage          = 0;
    bi.biXPelsPerMeter      = 0;
    bi.biYPelsPerMeter      = 0;
    bi.biClrUsed            = 0;
    bi.biClrImportant       = 0;

    dwLen  = bi.biSize + PaletteSize((LPBYTE)&bi);

    hdc = GetDC(NULL);
    HPALETTE hpalT = SelectPalette(hdc,hpal,FALSE);
    RealizePalette(hdc);

    hdib = GlobalAlloc(GHND,dwLen);

    if (!hdib)
	{
        SelectPalette(hdc,hpalT,FALSE);
        ReleaseDC(NULL,hdc);
        return NULL;
    }

    lpbi = (LPBITMAPINFOHEADER)GlobalLock(hdib);

    *lpbi = bi;

    /*  call GetDIBits with a NULL lpBits param, so it will calculate the
     *  biSizeImage field for us
     */
    GetDIBits(hdc, hbm, 0L, (DWORD)bi.biHeight,
        (LPBYTE)NULL, (LPBITMAPINFO)lpbi, (DWORD)DIB_RGB_COLORS);

    bi = *lpbi;
    GlobalUnlock(hdib);

    /* If the driver did not fill in the biSizeImage field, make one up */
    if (bi.biSizeImage == 0)
	{
        bi.biSizeImage = WIDTHBYTES((DWORD)bm.bmWidth * biBits) * bm.bmHeight;

        if (biCompression != BI_RGB)
            bi.biSizeImage = (bi.biSizeImage * 3) / 2;
    }

    /*  realloc the buffer big enough to hold all the bits */
    dwLen = bi.biSize + PaletteSize((LPBYTE)&bi) + bi.biSizeImage;
    if (h = GlobalReAlloc(hdib,dwLen,0))
        hdib = h;
    else
	{
        GlobalFree(hdib);
        hdib = NULL;

        SelectPalette(hdc,hpalT,FALSE);
        ReleaseDC(NULL,hdc);
        return hdib;
    }

    /*  call GetDIBits with a NON-NULL lpBits param, and actualy get the
     *  bits this time
     */
    lpbi = (LPBITMAPINFOHEADER)GlobalLock(hdib);

    if (! GetDIBits(hdc,
                    hbm,
                    0L,
                    (DWORD)bi.biHeight,
                    (LPBYTE)lpbi + (WORD)lpbi->biSize + PaletteSize((LPBYTE)lpbi),
                    (LPBITMAPINFO)lpbi, 
					(DWORD)DIB_RGB_COLORS))
	{
         GlobalUnlock(hdib);
         hdib = NULL;
         SelectPalette(hdc,hpalT,FALSE);
         ReleaseDC(NULL,hdc);
         return NULL;
    }
    bi = *lpbi;
   
	GlobalUnlock(hdib);
    SelectPalette(hdc,hpalT,FALSE);
    ReleaseDC(NULL,hdc);
    return hdib;
}


/************************************************************************* 
 * 
 * ChangeDIBFormat() 
 * 
 * Parameter: 
 * 
 * HDIB             - handle to packed-DIB in memory 
 * 
 * WORD             - desired bits per pixel 
 * 
 * DWORD            - desired compression format 
 * 
 * Return Value: 
 * 
 * HDIB             - handle to the new DIB if successful, else NULL 
 * 
 * Description: 
 * 
 * This function will convert the bits per pixel and/or the compression 
 * format of the specified DIB. Note: If the conversion was unsuccessful, 
 * we return NULL. The original DIB is left alone. Don't use code like the 
 * following: 
 * 
 *    hMyDIB = ChangeDIBFormat(hMyDIB, 8, BI_RLE4); 
 * 
 * The conversion will fail, but hMyDIB will now be NULL and the original 
 * DIB will now hang around in memory. We could have returned the old 
 * DIB, but we wanted to allow the programmer to check whether this 
 * conversion succeeded or failed. 
 * 
 ************************************************************************/ 
HDIB ChangeDIBFormat(HDIB hDIB, WORD wBitCount, DWORD dwCompression) 
{ 
    HBITMAP            hBitmap;         // Handle to bitmap 
    HDIB               hNewDIB = NULL;  // Handle to new DIB 
    HPALETTE           hPal;			// Handle to palette

    // Check for a valid DIB handle 
 
    if (!hDIB) 
        return NULL; 
 
    // Save the old DIB's palette 
 
    hPal = CreateDIBPalette(hDIB); 
    if (hPal == NULL)
        hPal = (HPALETTE)GetStockObject(DEFAULT_PALETTE);
 
    // Convert old DIB to a bitmap 
 
    hBitmap = DIBToBitmap(hDIB, hPal); 
    if (!hBitmap) 
    { 
        DeleteObject(hPal); 
        return NULL; 
    } 

	// Change bitmap format

	hNewDIB = ChangeBitmapFormat(hBitmap, wBitCount, dwCompression, hPal);
 
    // Clean up and return 
 
    DeleteObject(hBitmap); 
    DeleteObject(hPal); 
 
    return hNewDIB; 
} 
 

/**************************************************************************** 
* 
*     FUNCTION: ConvertDIBFormat 
* 
*     PURPOSE:  Creates a new DIB of the requested format, copies the source 
*               image to the new DIB. 
* 
*     PARAMS:   LPBITMAPINFO lpSrcDIB - the source CF_DIB 
*               UINT         nWidth   - width for new DIB 
*               UINT         nHeight  - height for new DIB 
*               UINT         nbpp     - bpp for new DIB 
*               BOOL         bStretch - TRUE to stretch source to dest 
*                                       FALSE to take upper left of image 
*				HPALETTE	 hPalSrc  - Palette used to set new DIB
*				DWORD		 dwSize   - return the size of new DIB pointer
* 
*     RETURNS:  HDIB - Handle of CF_DIB memory block with new image 
*               NULL on failure 
* 
\****************************************************************************/ 
HDIB ConvertDIBFormat(LPBYTE lpDIB, UINT nWidth, UINT nHeight, UINT nbpp, BOOL bStretch, HPALETTE hPalSrc) 
{ 
	LPBITMAPINFO lpSrcDIB =  (LPBITMAPINFO)lpDIB;
    LPBITMAPINFO lpbmi = NULL; 
    LPBYTE       lpSourceBits, lpTargetBits, lpResult; 
    HDC			 hDC = NULL, hSourceDC, hTargetDC; 
    HBITMAP      hSourceBitmap, hTargetBitmap, hOldTargetBitmap, hOldSourceBitmap; 
    DWORD        dwSourceBitsSize, dwTargetBitsSize, dwTargetHeaderSize, dwColorNum; 
	HDIB		 hDib;
 
    // Allocate and fill out a BITMAPINFO struct for the new DIB 
    if (nbpp <= 8) 
		dwColorNum = 1 << nbpp;
	else

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
宅男噜噜噜66一区二区66| 一区二区三区在线免费观看| 国产免费久久精品| 亚洲国产美女搞黄色| 国产精品538一区二区在线| 在线欧美一区二区| 综合av第一页| 国产精品一区二区91| 欧美一卡二卡三卡四卡| 亚洲三级视频在线观看| 成人深夜在线观看| 久久综合色一综合色88| 蜜臂av日日欢夜夜爽一区| 欧美性大战久久久久久久蜜臀| 亚洲国产精华液网站w| 精品亚洲成a人在线观看| 日韩欧美久久久| 五月天亚洲精品| 欧美日韩视频不卡| 亚洲成人免费视| 欧美日韩免费电影| 亚洲成年人网站在线观看| 在线精品视频小说1| 一区二区三区资源| 一本到不卡精品视频在线观看| 国产精品视频一二三区| 成人免费视频免费观看| 中文字幕欧美国产| 99精品偷自拍| 亚洲精品大片www| 日本伦理一区二区| 亚洲成人在线观看视频| 91麻豆精品国产91| 久久精品72免费观看| 日韩精品中文字幕一区| 精品亚洲成a人在线观看| 久久亚洲精精品中文字幕早川悠里| 欧美aaaaaa午夜精品| 日韩一级免费观看| 国产精品一线二线三线精华| 国产视频亚洲色图| 91麻豆swag| 亚洲国产精品一区二区www| 欧美日韩一区三区四区| 日韩av一区二区在线影视| 欧美mv日韩mv| 成人久久久精品乱码一区二区三区| 国产精品国模大尺度视频| 欧美中文字幕一区二区三区亚洲 | 成人av网址在线观看| 欧美国产一区视频在线观看| www.欧美亚洲| 亚洲成人资源网| 精品精品国产高清一毛片一天堂| 国产成a人亚洲| 亚洲女同ⅹxx女同tv| 欧美精品v国产精品v日韩精品 | 日韩女优av电影| 国产精品中文字幕日韩精品| 亚洲男人的天堂av| 9191精品国产综合久久久久久| 国产原创一区二区| 一区二区三区久久久| 欧美一区二区二区| 99精品视频在线观看| 欧美a一区二区| 自拍偷拍国产精品| 欧美电影免费观看完整版| av在线不卡网| 激情av综合网| 午夜不卡av免费| 久久夜色精品国产欧美乱极品| av午夜精品一区二区三区| 日韩电影在线一区二区| 一区在线中文字幕| 久久综合久久综合久久| 在线日韩国产精品| 成人美女视频在线观看| 老司机免费视频一区二区| 亚洲精品国产高清久久伦理二区| 亚洲精品一区二区精华| 欧美精品三级在线观看| 99精品欧美一区二区蜜桃免费| 麻豆freexxxx性91精品| 亚洲香蕉伊在人在线观| 国产精品网站在线| 久久一夜天堂av一区二区三区| 欧美性大战xxxxx久久久| 成人激情校园春色| 国产精品自拍毛片| 日本在线不卡视频| 亚洲国产视频一区二区| 综合在线观看色| 国产精品色哟哟| 2021国产精品久久精品| 91精品在线观看入口| 欧美视频精品在线| 色欧美片视频在线观看 | 国产欧美一区二区精品性色超碰| 4438成人网| 欧美美女喷水视频| 欧美怡红院视频| 91精品办公室少妇高潮对白| 成人avav影音| 成人国产免费视频| 成人激情综合网站| 成人av在线电影| av电影天堂一区二区在线观看| 国产成人在线视频播放| 国产精品123| 国产91在线看| 成人激情综合网站| 99久久精品国产网站| 色噜噜狠狠色综合中国| 91九色最新地址| 国产精品剧情在线亚洲| 国产精品天美传媒| 国产精品素人一区二区| 国产精品久久久久一区二区三区共| 亚洲国产成人在线| 自拍偷拍国产亚洲| 亚洲国产日韩精品| 日韩高清在线一区| 黄一区二区三区| 国产不卡视频在线播放| 99久久精品久久久久久清纯| 色哟哟日韩精品| 欧美精品三级日韩久久| 精品福利在线导航| 中文字幕不卡在线| 一区二区视频在线看| 丝袜美腿亚洲色图| 久久激情五月婷婷| 成人av免费观看| 欧美猛男男办公室激情| 精品国产91亚洲一区二区三区婷婷| 久久精品一区二区三区av| 国产精品入口麻豆原神| 亚洲主播在线观看| 久久超碰97中文字幕| 不卡的看片网站| 91.xcao| 国产欧美一区在线| 亚洲电影你懂得| 国产乱码精品1区2区3区| 99在线精品免费| 日韩一区二区三区在线| 国产精品久久久久毛片软件| 午夜在线成人av| 国产91丝袜在线18| 欧美日韩精品系列| 日本一区二区不卡视频| 午夜影院久久久| av电影在线观看完整版一区二区| 欧美狂野另类xxxxoooo| 国产精品久久毛片a| 日韩精彩视频在线观看| 91影院在线免费观看| 日韩欧美一区中文| 亚洲综合色网站| 国产精品白丝jk白祙喷水网站 | 欧美一激情一区二区三区| 国产精品天美传媒沈樵| 美女mm1313爽爽久久久蜜臀| 一本大道av一区二区在线播放| 精品成人私密视频| 视频一区中文字幕| 日本福利一区二区| 国产农村妇女毛片精品久久麻豆 | 亚洲国产精品久久人人爱蜜臀 | 国产精品剧情在线亚洲| 免费成人美女在线观看.| 色综合天天综合在线视频| 久久免费视频一区| 美女视频网站黄色亚洲| 国产精品网站一区| 久88久久88久久久| 在线播放/欧美激情| 亚洲电影你懂得| 日本韩国欧美在线| 中文字幕在线不卡| 国产成人免费xxxxxxxx| 欧美精品一区二区三区四区| 免费观看日韩电影| 日韩一卡二卡三卡四卡| 日韩激情一二三区| 91麻豆精品久久久久蜜臀 | 欧美浪妇xxxx高跟鞋交| 亚洲国产成人av| 欧洲日韩一区二区三区| 亚洲欧美日韩国产成人精品影院| 成人久久久精品乱码一区二区三区| 26uuuu精品一区二区| 久久99精品久久只有精品| 日韩免费高清av| 狠狠色综合日日| 久久久一区二区三区| 国产露脸91国语对白| 国产日韩精品一区二区三区 | 欧美精品丝袜久久久中文字幕|