VC++数字图像处理编程(9)

时间:2025-04-30

{//以"读"的方式打开文件;

AfxMessageBox("图像文件打不开!");

return FALSE;

}

DeleteContents();//删除文挡;

BeginWaitCursor();

BITMAPFILEHEADER bmfHeader;//定义位图文件头结构;

LPBITMAPINFO lpbmi;

DWORD dwBitsSize;

HANDLE hDIB;

LPSTR pDIB;//指向位图数据的指针;

BITMAPINFOHEADER *bmhdr;//指向位图信息头结构的指针

dwBitsSize = file.GetLength();//得到文件长度

if (file.Read((LPSTR)&bmfHeader,

sizeof(bmfHeader)) !=sizeof(bmfHeader))

return FALSE;//读取位图文件的文件头结构信息;

if (bmfHeader.bfType != 0x4d42) //检查该文件是否为BMP格式的文件; return FALSE;

hDIB=(HANDLE) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize); //为读取图像文件数据申请缓冲区

if (hDIB == 0)

{

return FALSE;

}

pDIB = (LPSTR) ::GlobalLock((HGLOBAL)hDIB);

//得到申请的缓冲区的指针;

if (file.ReadHuge(pDIB, dwBitsSize - sizeof(BITMAPFILEHEADER)) != dwBitsSize - sizeof(BITMAPFILEHEADER) )

{

::GlobalUnlock((HGLOBAL)hDIB);

hDIB=NULL; return FALSE; }//此时pDIB数据块中读取的数据包括位图头信息、位图颜色表、图像像素的灰度值;

bmhdr=(BITMAPINFOHEADER*)pDIB;//为指向位图信息头结构的指针赋值; ::GlobalUnlock((HGLOBAL)hDIB);

if ((*bmhdr).biBitCount!=8)//验证是否为8bit位图

{

AfxMessageBox("该文件不是灰度位图格式!");

return FALSE;

}

m_hDIB=hDIB;//将内部变量数据赋于全局变量;

//下面是记录位图的尺寸;

m_sizeDoc.x=bmhdr->biWidth;

VC++数字图像处理编程(9).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219