资源说明:〉CDIB功能
提供针对设备无关位图的一系列操作。
〉CDIB使用方法
将DIB目录复制到工程的原文件目录中。
在工程的Source Files中添加DIB文件夹,并导入DIB目录中的所有文件。
在需要使用DIB的文件中添加
include "dib.h"
using namespace DIB;
1)读取Bitmap图片
//CDib对象可以从读取Bitmap,DIB文件数据。
//之前需要创建CFile对象,而后从CFile对象读取数据。
CDib m_Dib;
CFile* pf;
pf=new CFile;
pf->Open(m_ImageName,CFile::modeRead); //m_ImageName为路径加文件名,如"C:\\Img\\My_Bitmap.bmp"
m_Dib.Read(pf);
pf->Close();
delete pf;
2)保存CDib对象到文件
//m_Dib是包含有图像数据CDib对象
//pFile 指向已经创建的可对文件进行写操作的CFile对象
m_Dib.write(CFile* pFile)
3)从CDIB获得图像数据
//m_Dib 包含有图像数据CDib对象
//realDataFLag 选择是返回真实图像数据,还是返回灰度数据的布尔值变量(bool),为真时返回的是图像真实数据。
unsigned char * img;
img=m_Dib.GetImgPtr(realDataFLag); //获得的图像数据是以左上角为(0,0)点开始的从左至右,
//从上至下,具有真实宽度(非补4)的数据
//realDataFlag为真时返回的是图像真实数据
//realDataFlag为假时返回的是灰度化的图像数据
4)将图像数据赋给CDib对象
//m_Dib是包含有图像数据CDib对象
//img 指向图像数据的无符号字符型指针(unsigned char *)
//realDataFLag 指明输入的是真实图像数据,还是返回灰度数据的布尔值变量(bool),为真时输入的是图像真实数据。
m_Dib.SetImgPtr(img,realDataFlag);//设置图像数据
5)从图像数据创建CDib对象
CDib m_Dib
m_Dib.CreateDib(pImgData,width,height,nBitCount);//pImgData为指向图象数据的指针
//nBitCount一个像素所用的比特数 目前仅支持8
6)由CDib对象创建Bitmap对象
//m_Dib是包含有图像数据CDib对象
HBITMAP bitmap;
CDC * pDC=AfxGetApp()->GetMainWnd()->GetDC();
bitmap=m_Dib.CreateBitmap(pDC)//输入值为 CDC * ,一般可通过AfxGetApp()->GetMainWnd()->GetDC()获得
7)显示图象中的特殊信息
在处理过程中将图像中的特殊信息用251~255表示(对彩色图像,将R、G、B赋予251~255的相同数值)
将灰度图象中灰度值大于等于251的不需特殊显示的像素赋为250,
将彩色图像中R=G=B且大于等于251的不需特殊显示的像素赋为(250,250,250)
而后按4)中描述的将图像数据赋给CDib对象
最后调用EnhanceColor()将CDib对象转化为可以显示特殊信息的图像
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。