如何使用 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;
发表评论
-
Javascript加密解密终级指南escape解密/eval加密/Encode加密原理
2012-01-20 01:39 1273Javascript加密解密终级指 ... -
autoit3简要笔记
2012-01-20 01:39 1433autoit3简要笔记 2011年02月11日 ... -
BAT命令大全
2012-01-20 01:39 536BAT命令大全 2010年11月11日 BAT命令大全 ... -
IIS修复工具,怎么完全卸载IIS
2012-01-20 01:38 545IIS修复工具,怎么完全卸 ... -
自动化测试-略懂
2012-01-20 01:38 543自动化测试-略懂 2010年09月14日 其实我目前是处 ... -
BMP位图结构解析
2012-01-19 09:28 677BMP位图结构解析 2010年1 ... -
BMP位图文件的存储格式2
2012-01-19 09:28 734BMP位图文件的存储格式2 2011年06月18日 位图 ... -
保存bmp
2012-01-19 09:28 597保存bmp 2010年10月24日 ---------- ... -
bmp/gif/jpg图象最底层原理分析(1)----jpg
2012-01-19 09:28 689bmp/gif/jpg图象最底层原 ... -
AIX 性能调优-内存、CPU篇
2012-01-17 02:03 1448AIX 性能调优-内存、CPU篇 2011年04月25日 ... -
MTK(MTK内存、任务管理和定时器消息机制)
2012-01-17 02:03 1176MTK(MTK内存、任务管理和 ... -
VC编译器配置及编译选项
2012-01-17 02:03 547VC编译器配置及编译选 ... -
C# 路径,文件,目录,IO常见问题汇总 - wxbjs - 博客园
2012-01-17 02:03 1348C# 路径,文件,目录,IO常 ... -
WinCE驱动开发问题精华集锦
2012-01-17 02:03 520WinCE驱动开发问题精华 ... -
5月4日横滨アリ ナ跳跳+NYC CON 观后感
2012-01-15 21:25 6465月4日横滨アリ ナ跳跳+NYC CON 观后感 2011年 ... -
政治老妖婆(大家support 下下哈)
2012-01-15 21:25 565政治老妖婆(大家support 下下哈) 2009年11月1 ... -
日语听力词汇
2012-01-15 21:25 471日语听力词汇 2010年11月22日 动作、体态、姿势等 ... -
那些日子(一)
2012-01-15 21:25 569那些日子(一) 2009年06月30日 "吃不 ... -
那些点滴,世事无常
2012-01-15 21:25 432那些点滴,世事无常 2011 ...
相关推荐
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的程序员借鉴学习