- 浏览: 27880 次
- 性别:
- 来自: 济南
最新评论
如何使用 LoadImage() 读取 BMP 文件
2010年06月04日
下面的代码使用来加载一个 DIBSection 作为位图的 LoadImage API,然后从 DIBSection 的颜色表中创建一个调色板。 是否存在没有颜色表使用半色调调色板:
BOOL LoadBitmapFromBMPFile( LPTSTR szFileName, HBITMAP *phBitmap, HPALETTE *phPalette ) { BITMAP bm; *phBitmap = NULL; *phPalette = NULL; // Use LoadImage() to get the image loaded into a DIBSection *phBitmap = (HBITMAP)LoadImage( NULL, szFileName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE ); if( *phBitmap == NULL ) return FALSE; // Get the color depth of the DIBSection GetObject(*phBitmap, sizeof(BITMAP), &bm ); // If the DIBSection is 256 color or less, it has a color table if( ( bm.bmBitsPixel * bm.bmPlanes ) rgb[256]; LPLOGPALETTE pLogPal; WORD i; // Create a memory DC and select the DIBSection into it hMemDC = CreateCompatibleDC( NULL ); hOldBitmap = (HBITMAP)SelectObject( hMemDC, *phBitmap ); // Get the DIBSection's color table GetDIBColorTable( hMemDC, 0, 256, rgb ); // Create a palette from the color tabl pLogPal = (LOGPALETTE *)malloc( sizeof(LOGPALETTE) + (256*sizeof(PALETTEENTRY)) ); pLogPal->palVersion = 0x300; pLogPal->palNumEntries = 256; for(i=0;ipalPalEntry.peRed = rgb.rgbRed; pLogPal->palPalEntry.peGreen = rgb.rgbGreen; pLogPal->palPalEntry.peBlue = rgb.rgbBlue; pLogPal->palPalEntry.peFlags = 0; } *phPalette = CreatePalette( pLogPal ); // Clean up free( pLogPal ); SelectObject( hMemDC, hOldBitmap ); DeleteDC( hMemDC ); } else // It has no color table, so use a halftone palette { HDC hRefDC; hRefDC = GetDC( NULL ); *phPalette = CreateHalftonePalette( hRefDC ); ReleaseDC( NULL, hRefDC ); } return TRUE; }
以下代码演示如何使用 LoadBitmapFromBMPFile 函数:
case WM_PAINT: { PAINTSTRUCT ps; HBITMAP hBitmap, hOldBitmap; HPALETTE hPalette, hOldPalette; HDC hDC, hMemDC; BITMAP bm; hDC = BeginPaint( hWnd, &ps ); if( LoadBitmapFromBMPFile( szFileName, &hBitmap, &hPalette ) ) { GetObject( hBitmap, sizeof(BITMAP), &bm ); hMemDC = CreateCompatibleDC( hDC ); hOldBitmap = (HBITMAP)SelectObject( hMemDC, hBitmap ); hOldPalette = SelectPalette( hDC, hPalette, FALSE ); RealizePalette( hDC ); BitBlt( hDC, 0, 0, bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY ); SelectObject( hMemDC, hOldBitmap ); DeleteObject( hBitmap ); SelectPalette( hDC, hOldPalette, FALSE ); DeleteObject( hPalette ); } EndPaint( hWnd, &ps ); } break;
发表评论
-
组件编程
2012-07-03 11:12 610面向过程的编程重 ... -
2012-07-03 10:12 2...
-
linux平台oracle10g rac搭建
2012-01-20 00:14 1536linux平台oracle10g rac搭建 2010年09 ... -
MSDN Kernel-Mode Driver Architecture学习笔记(4)――Kernel-Mode Driver Components (3)
2012-01-20 00:14 736MSDN Kernel-Mode Driver Archite ... -
Java IO 详解
2012-01-20 00:14 645Java IO 详解 2010年09月25 ... -
内核编译配置选项简介 (2.4.20-8)
2012-01-20 00:14 1109内核编译配置选项简介 ... -
fread函数和fwrite函数
2012-01-20 00:14 619fread函数和fwrite函数 2010年06月28日 ... -
全国名小吃
2012-01-19 01:06 625全国名小吃 2012年01月14日 广西小吃 广西菜点由 ... -
看“非诚勿扰”(2011.3.27)
2012-01-19 01:06 565看“非诚勿扰”(2011.3.27 ... -
全国各省女孩性格+美丽程度比较分析!
2012-01-19 01:05 863全国各省女孩性格+美丽 ... -
中国不同地方女人的主要特点
2012-01-19 01:05 1192中国不同地方女人的主 ... -
“嗲妹妹”与”假小子“
2012-01-19 01:05 536“嗲妹妹”与”假小子 ... -
VB获取图象的象素
2012-01-17 00:28 1757VB获取图象的象素 2011 ... -
BMP位图结构解析
2012-01-17 00:28 940BMP位图结构解析 2010年1 ... -
BMP位图文件的存储格式2
2012-01-17 00:28 691BMP位图文件的存储格式2 2011年06月18日 位图 ... -
保存bmp
2012-01-17 00:28 608保存bmp 2010年10月24日 ---------- ... -
小学总写600字的作文
2012-01-15 14:48 546小学总写600字的作文 2009年11月24日 某年某月 ... -
提高小学作文实效性的思考
2012-01-15 14:48 543提高小学作文实效性的思考 2010年11月17日 摘要: ... -
小学三年级学生评语大全
2012-01-15 14:48 468小学三年级学生评语大 ... -
小学生评语大全2
2012-01-15 14:47 527小学生评语大全2 2009年12月08日 懿洵: ...
相关推荐
vc CBitmapLoadBitmap_LoadImage加载.bmp文件
从BMP文件中装入位图并显示 the bmp file has four sections. the first is bitmapfileheader. this contains the bitmap file signature, the size of the bitmap and the offset to the array of bits that define...
VC使用LoadImage 加载BMP图片文件时,有时会出现返回值为0,但实际上加载失败的问题,原因是该bmp图片为24位的倒置存储格式,而LoadImage 不支持倒置存储格式导致。附近里是解决该问题的函数,完美兼容。
LoadImage
matlab开发-loadimage。负载
CFileDialog dlg(TRUE,"bmp",NULL,NULL,"位图文件(BMP)|*.bmp",this); if (dlg.DoModal()==IDOK) { m_FileName = dlg.GetPathName(); UpdateData(FALSE); } if (!m_FileName.IsEmpty()) { HANDLE ...
jquery.LoadImage图片预加载是一款一款实用简单的图片预加载效果,支持loading小图片,完全不需要在html让做任何改变即可实现。
下载图片loadImage
重载cesium.ImageryProvider类中的loadImage函数,用于获取瓦片资源
105. bird = (HBITMAP)LoadImage(NULL,"angrybird.bmp",IMAGE_BITMAP,120,60,LR_LOADFROMFILE); 106. 107. GetClientRect(hWnd,▭); //取得内部窗口区域的大小 108. MyPaint(hdc); 109. 110. return TRUE; ...
EXCEL中所有图片链接,直接转成缩略图,并加入原来链接,可以点击
亲测可以打开! JS加载load图片 jquery.LoadImage图片预加载(逐渐加载)demo
UEFI loadImage protorcl如何使用,并给出调用后可得到的内存中的模块信息
以DIB格式显示图片
您将需要下载提供的图像文件,或者将另一个下载到桌面,然后转到:#Sketch>添加文件>选择图像这将使用图像创建DATA文件夹。 您必须执行此操作才能使代码正常工作。 命名约定 “ YOURNAME_Halloween”“ _”在单词...
实用方法如下: 1、导入jquery库以及...2、使用一小段jquery代码,指定需要加载的img即可,例如本案例指定class 为 main 下的图片预加载,则如$(".main img"),当然也可以指定加载的loading路径以及加载后的图片大小
4.CreateProcess、CreateThread、LoadImage、CmpCallback、BugCheckCallback、Shutdown、Lego等Notify Routine信息查看,并支持对这些Notify Routine的删除 5.端口信息查看,目前不支持2000系统 6.查看消息钩子 7....
使用vs2015与opencv加载并显示图像
LoadImage(NULL,bmpFile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION); Bmp2.Attach(hFgBmp); BITMAP bm; Bmp2.GetBitmap(&bm); int nWidth=bm.bmWidth,nHeight=bm.bmHeight; ...
给刚学习使用Imageloade的程序员借鉴学习