青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 74, 文章 - 0, 評(píng)論 - 26, 引用 - 0
數(shù)據(jù)加載中……

Write HBITMAP Object in to BMP File 轉(zhuǎn)

void WriteBMPFile(HBITMAP bitmap, LPTSTR filename, HDC hDC)
{
BITMAP bmp;
PBITMAPINFO pbmi;
WORD cClrBits;
HANDLE hf; // file handle
BITMAPFILEHEADER hdr; // bitmap file-header
PBITMAPINFOHEADER pbih; // bitmap info-header
LPBYTE lpBits; // memory pointer
DWORD dwTotal; // total count of bytes
DWORD cb; // incremental count of bytes
BYTE *hp; // byte pointer
DWORD dwTmp;

// create the bitmapinfo header information

if (!GetObject( (bitmap, sizeof(BITMAP), (LPSTR)&bmp)){
AfxMessageBox("Could not retrieve bitmap info");
return;
}

// Convert the color format to a count of bits.
cClrBits = (WORD)(bmp.bmPlanes * bmp.bmBitsPixel);
if (cClrBits == 1)
cClrBits = 1;
else if (cClrBits <= 4)
cClrBits = 4;
else if (cClrBits <= 8)
cClrBits = 8;
else if (cClrBits <= 16)
cClrBits = 16;
else if (cClrBits <= 24)
cClrBits = 24;
else cClrBits = 32;

// Allocate memory for the BITMAPINFO structure.
if (cClrBits != 24)
pbmi = (PBITMAPINFO) LocalAlloc(LPTR,
sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * (1<< cClrBits));
else
pbmi = (PBITMAPINFO) LocalAlloc(LPTR, sizeof(BITMAPINFOHEADER));

// Initialize the fields in the BITMAPINFO structure.

pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
pbmi->bmiHeader.biWidth = bmp.bmWidth;
pbmi->bmiHeader.biHeight = bmp.bmHeight;
pbmi->bmiHeader.biPlanes = bmp.bmPlanes;
pbmi->bmiHeader.biBitCount = bmp.bmBitsPixel;
if (cClrBits < 24)
pbmi->bmiHeader.biClrUsed = (1<<cClrBits);

// If the bitmap is not compressed, set the BI_RGB flag.
pbmi->bmiHeader.biCompression = BI_RGB;

// Compute the number of bytes in the array of color
// indices and store the result in biSizeImage.
pbmi->bmiHeader.biSizeImage = (pbmi->bmiHeader.biWidth + 7) /8 * pbmi->bmiHeader.biHeight * cClrBits;
// Set biClrImportant to 0, indicating that all of the
// device colors are important.
pbmi->bmiHeader.biClrImportant = 0;

// now open file and save the data
pbih = (PBITMAPINFOHEADER) pbmi;
lpBits = (LPBYTE) GlobalAlloc(GMEM_FIXED, pbih->biSizeImage);

if (!lpBits) {
AfxMessageBox("writeBMP::Could not allocate memory");
return;
}

// Retrieve the color table (RGBQUAD array) and the bits
if (!GetDIBits(hDC, HBITMAP(bitmap), 0, (WORD) pbih->biHeight, lpBits, pbmi,
DIB_RGB_COLORS)) {
AfxMessageBox("writeBMP::GetDIB error");
return;
}

// Create the .BMP file.
hf = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, (DWORD) 0,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);
if (hf == INVALID_HANDLE_VALUE){
AfxMessageBox("Could not create file for writing");
return;
}
hdr.bfType = 0x4d42; // 0x42 = "B" 0x4d = "M"
// Compute the size of the entire file.
hdr.bfSize = (DWORD) (sizeof(BITMAPFILEHEADER) +
pbih->biSize + pbih->biClrUsed
* sizeof(RGBQUAD) + pbih->biSizeImage);
hdr.bfReserved1 = 0;
hdr.bfReserved2 = 0;

// Compute the offset to the array of color indices.
hdr.bfOffBits = (DWORD) sizeof(BITMAPFILEHEADER) +
pbih->biSize + pbih->biClrUsed
* sizeof (RGBQUAD);

// Copy the BITMAPFILEHEADER into the .BMP file.
if (!WriteFile(hf, (LPVOID) &hdr, sizeof(BITMAPFILEHEADER),
(LPDWORD) &dwTmp, NULL)) {
AfxMessageBox("Could not write in to file");
return;
}

// Copy the BITMAPINFOHEADER and RGBQUAD array into the file.
if (!WriteFile(hf, (LPVOID) pbih, sizeof(BITMAPINFOHEADER)
+ pbih->biClrUsed * sizeof (RGBQUAD),
(LPDWORD) &dwTmp, ( NULL))){
AfxMessageBox("Could not write in to file");
return;
}


// Copy the array of color indices into the .BMP file.
dwTotal = cb = pbih->biSizeImage;
hp = lpBits;
if (!WriteFile(hf, (LPSTR) hp, (int) cb, (LPDWORD) &dwTmp,NULL)){
AfxMessageBox("Could not write in to file");
return;
}

// Close the .BMP file.
if (!CloseHandle(hf)){
AfxMessageBox("Could not close file");
return;
}

// Free memory.
GlobalFree((HGLOBAL)lpBits);
}

posted on 2009-02-16 11:32 井泉 閱讀(1229) 評(píng)論(2)  編輯 收藏 引用

評(píng)論

# re: Write HBITMAP Object in to BMP File 轉(zhuǎn)  回復(fù)  更多評(píng)論   

結(jié)果是什么
2010-03-09 16:12 | nfl 2010

# re: Write HBITMAP Object in to BMP File 轉(zhuǎn)  回復(fù)  更多評(píng)論   

I have the functions to check if there is an image on the clipboard and to get the HBITMAP data of that image. Now I only have one question: How can I save, in C++, an HBITMAP structure into a Bitmap file on the computer?
2011-04-20 18:36 | Human Health

只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲激情成人网| 在线不卡中文字幕播放| 亚洲黄色性网站| 欧美激情第五页| 欧美黄色一级视频| 日韩一区二区精品视频| 99xxxx成人网| 国产日韩在线亚洲字幕中文| 麻豆成人在线播放| 欧美激情国产日韩| 校园激情久久| 久久一区视频| 午夜久久资源| 亚洲开发第一视频在线播放| 一区二区欧美日韩视频| 国产一区二区三区的电影| 欧美福利一区二区三区| 欧美性猛交视频| 麻豆久久精品| 欧美视频一区二区在线观看 | 国产日韩亚洲| 亚洲电影欧美电影有声小说| 欧美性大战久久久久久久| 久久精品免费看| 欧美日韩久久不卡| 久久久精品日韩| 欧美精品大片| 久色成人在线| 国产精品亚洲成人| 最新国产精品拍自在线播放| 国产一区二区成人| aa亚洲婷婷| 亚洲人午夜精品| 欧美一区二区三区婷婷月色 | 亚洲国产一区二区三区a毛片| 国产精品99久久久久久人| 亚洲精品1区2区| 久久爱www| 亚洲免费影视| 欧美日韩国产综合久久| 免费观看在线综合| 国产欧美日韩三级| 夜夜狂射影院欧美极品| 亚洲黄色免费电影| 久久亚洲综合色| 久久天天躁夜夜躁狠狠躁2022 | 好吊成人免视频| 午夜精品久久久久久久99樱桃| 一区二区三区国产精品| 裸体一区二区| 免费一级欧美在线大片| 国内精品久久国产| 欧美一区二区三区在线| 午夜精品久久久久久| 欧美色视频一区| 99成人在线| 亚洲宅男天堂在线观看无病毒| 欧美精彩视频一区二区三区| 欧美大片va欧美在线播放| 红桃视频成人| 久久人人爽国产| 麻豆精品一区二区综合av| 黄色国产精品| 久久视频在线免费观看| 免费成人在线观看视频| 亚洲第一色中文字幕| 老司机午夜精品视频在线观看| 免费视频一区二区三区在线观看| 国内精品视频666| 久久久噜噜噜久久久| 免费成人av资源网| 亚洲人成免费| 欧美日韩另类一区| 亚洲一区在线免费| 久久国产一区二区三区| 韩日欧美一区二区三区| 蜜桃av综合| 妖精成人www高清在线观看| 亚洲欧美国产精品桃花| 国产欧美日韩视频| 久久久在线视频| 亚洲高清在线观看| 亚洲一级电影| 国产一区二区日韩| 欧美91大片| 宅男精品视频| 蜜桃久久精品乱码一区二区| 亚洲日本aⅴ片在线观看香蕉| 欧美精品乱码久久久久久按摩 | 看片网站欧美日韩| 亚洲精品偷拍| 国产精品有限公司| 可以看av的网站久久看| 一本久久精品一区二区| 久久成人免费日本黄色| 亚洲国产天堂久久综合网| 欧美日韩三区四区| 久久精品日韩欧美| 日韩午夜剧场| 毛片精品免费在线观看| 这里只有精品电影| 韩国女主播一区| 欧美久久电影| 久久精品国产69国产精品亚洲| 亚洲激情网站| 久久一本综合频道| 亚洲天堂免费在线观看视频| 一区二区三区中文在线观看| 欧美日韩中文字幕综合视频| 久久久亚洲国产美女国产盗摄| 亚洲最新在线视频| 欧美成人久久| 久久久久九九九| 亚洲一区二区在| 亚洲精品中文字幕在线| 国内久久精品| 国产麻豆午夜三级精品| 欧美人在线观看| 美女91精品| 久久久久**毛片大全| 亚洲天堂av在线免费| 亚洲狠狠丁香婷婷综合久久久| 久久国内精品视频| 午夜一区在线| 亚洲免费一级电影| 亚洲香蕉在线观看| 99热免费精品在线观看| 亚洲欧洲日产国产综合网| 狠狠色狠色综合曰曰| 国产日韩欧美在线一区| 国产精品一区二区久久| 欧美日韩国产在线观看| 欧美了一区在线观看| 欧美电影打屁股sp| 欧美91大片| 欧美电影专区| 欧美激情四色| 欧美极品aⅴ影院| 欧美精品成人91久久久久久久| 欧美大片免费| 欧美欧美天天天天操| 欧美日韩久久不卡| 欧美日韩精品伦理作品在线免费观看| 免费成人小视频| 欧美大片免费久久精品三p | 一区二区三区日韩在线观看| 亚洲免费av电影| 亚洲一区二区欧美日韩| 亚洲一区日本| 欧美一区二区福利在线| 久久国产直播| 欧美成人精品| 欧美日韩国产999| 国产精品jizz在线观看美国| 国产精品久久久久久久久久久久久久| 欧美亚州韩日在线看免费版国语版| 欧美日韩在线视频一区| 国产精品综合久久久| 国产亚洲欧美日韩在线一区 | 欧美日韩国产首页| 欧美性色综合| 国产亚洲毛片在线| 亚洲黄色av| 亚洲在线一区二区三区| 久久久精品午夜少妇| 欧美国产一区二区| 亚洲最黄网站| 久久国产加勒比精品无码| 免费91麻豆精品国产自产在线观看| 欧美风情在线观看| 国产精品家庭影院| 伊大人香蕉综合8在线视| 亚洲免费福利视频| 欧美一区不卡| 亚洲国产日韩在线一区模特| 亚洲图片自拍偷拍| 久久偷窥视频| 国产精品久久久爽爽爽麻豆色哟哟 | 免费欧美日韩国产三级电影| 日韩一本二本av| 久久久久国产免费免费| 欧美日韩国产影院| 亚洲成人在线免费| 亚洲一区二区在| 欧美激情视频在线播放 | 日韩视频一区二区三区| 久久精品系列| 国产精品国产福利国产秒拍| 亚洲电影在线免费观看| 亚洲午夜国产一区99re久久| 免费美女久久99| 亚洲欧美日韩天堂| 欧美日韩国产一区二区三区| 黄页网站一区| 欧美在线一级视频| 亚洲精品视频二区| 母乳一区在线观看| 一区二区三区我不卡| 欧美一区视频在线| 在线亚洲欧美|