• 大小: 21.71MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-02
  • 语言: C/C++
  • 标签: mfc  

资源简介

数字图像处理mfc ,可以加深数字图像处理中相关算法的实现的理解

资源截图

代码片段和文件信息

// DIB.cpp: implementation of the CDIB class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “dib.h“
#include 

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

/*************************************************************************
 * 基本构造函数
*************************************************************************/
CDIB::CDIB()
{
m_hDIB=NULL;
m_pPal=NULL;
}

CDIB::~CDIB()
{
if (m_hDIB != NULL) // 判断DIB对象是否存在
::GlobalFree((HGLOBAL) m_hDIB); // 清除DIB对象
m_hDIB=NULL;

if (m_pPal)
{
delete m_pPal;m_pPal=NULL;
}
}

/*************************************************************************
 * 重载构造函数
 *
 * 参数:
 *   CFile& file        - 要读取的文件CFile必须成功打开
 *
 * 说明:
 *   重载构造函数将指定的文件中的DIB对象读到由m_hDIB指定的内存区域中。
 *  除BITMAPFILEHEADER外的内容都将被读入内存。
 *************************************************************************/
CDIB::CDIB(CFile file)
{
BITMAPFILEHEADER bmfh; // Bitmap文件头
DWORD dwBitsSize; // DIB大小
LPSTR pDIB; // 指向DIB的指针
m_pPal=NULL;

// 获取DIB图象的字节数(不包括文件头)
dwBitsSize = file.GetLength()-sizeof(BITMAPFILEHEADER);

// 尝试读取DIB文件头如果读取成功则在此已经将文件头读取了因此后面读取
// 到pDIB中的不包括文件头
if (file.Read((LPSTR)&bmfh sizeof(BITMAPFILEHEADER)) == sizeof(BITMAPFILEHEADER))
{
if (bmfh.bfType == MakeHeader()) // 头两个字节是“BM“
{
// 为DIB分配内存
m_hDIB =  ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT dwBitsSize);
if (m_hDIB != NULL) // 分配内存成功
{
pDIB = (LPSTR) ::GlobalLock((HGLOBAL) m_hDIB); // 锁定

// 读象素
if (file.ReadHuge(pDIB dwBitsSize) != dwBitsSize) // 大小不对
{
::GlobalUnlock((HGLOBAL) m_hDIB); // 解除锁定
::GlobalFree((HGLOBAL) m_hDIB); // 释放内存
m_hDIB=NULL;
}
else
{
::GlobalUnlock((HGLOBAL) m_hDIB); // 解除锁定
}
}
}
else // 不是位图文件
{
m_hDIB=NULL;
}
}
else // 读取文件不成功
{
m_hDIB=NULL;
}

}

/*************************************************************************
 * 拷贝构造函数
 *
 * 参数:
 *   CDIB SrcDIB        - 要要拷贝的图象
 *
 * 说明:
 *   拷贝构造函数将指定的图象复制到对象中。
 *************************************************************************/
CDIB::CDIB(CDIB &SrcDIB)
{
m_pPal=NULL;
if (SrcDIB.GetHandle()==NULL)
m_hDIB=NULL;
else
{
LPSTR lpSrcDIB; // 源图象内存地址指针从信息头开始
LPSTR lpDesDIB; // 目标图象内存地址指针从信息头开始

int iHeight=SrcDIB.GetHeight(); // 源图象高度
int iBitsWidth=SrcDIB.GetBitsWidth(); // 源图象宽度
HANDLE hSrcDIB=SrcDIB.GetHandle(); // 源图象句柄  

// 锁定源图象内存块并返回其起始位置指针
lpSrcDIB=(LPSTR) GlobalLock(hSrcDIB);

// 计算源图象所占据内存的字节数
unsigned long ulDibSize=*(LPDWORD)lpSrcDIB + SrcDIB.GetPaletteSize()
    +iHeight * iBitsWidth;


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-09-27 23:26  Sample\
     目录           0  2015-09-23 08:29  Sample\.vs\
     目录           0  2015-09-23 08:29  Sample\.vs\Sample\
     目录           0  2015-09-23 08:29  Sample\.vs\Sample\v14\
     文件       24576  2015-09-23 09:36  Sample\.vs\Sample\v14\.suo
     目录           0  2015-09-23 08:30  Sample\Backup\
     目录           0  2015-09-23 08:32  Sample\Backup1\
     目录           0  2015-09-23 08:35  Sample\Backup2\
     目录           0  2015-09-23 08:42  Sample\Backup3\
     目录           0  2015-09-23 09:34  Sample\Backup4\
     文件         425  2015-09-23 08:42  Sample\Backup4\Sample.sln
     目录           0  2015-09-23 11:08  Sample\Debug\
     文件       44431  2015-09-23 11:08  Sample\Debug\DIB.obj
     文件           0  2015-09-23 11:08  Sample\Debug\DIB.sbr
     文件       23299  2015-09-23 11:08  Sample\Debug\DlgGaussTemp.obj
     文件           0  2015-09-23 11:08  Sample\Debug\DlgGaussTemp.sbr
     文件       49357  2015-09-23 11:08  Sample\Debug\DlgSmooth.obj
     文件           0  2015-09-23 11:08  Sample\Debug\DlgSmooth.sbr
     文件       31296  2015-09-23 11:08  Sample\Debug\GeometricDlg.obj
     文件           0  2015-09-23 11:08  Sample\Debug\GeometricDlg.sbr
     文件       41827  2015-09-23 11:08  Sample\Debug\HistogramDlg.obj
     文件           0  2015-09-23 11:08  Sample\Debug\HistogramDlg.sbr
     文件       40456  2015-09-23 11:08  Sample\Debug\ImageEnhenceDlg.obj
     文件           0  2015-09-23 11:08  Sample\Debug\ImageEnhenceDlg.sbr
     文件       66067  2015-09-23 11:08  Sample\Debug\ImageFilterDlg.obj
     文件           0  2015-09-23 11:08  Sample\Debug\ImageFilterDlg.sbr
     文件       64249  2015-09-23 11:08  Sample\Debug\ImageSharpDlg.obj
     文件           0  2015-09-23 11:08  Sample\Debug\ImageSharpDlg.sbr
     文件       22366  2015-09-23 00:17  Sample\Debug\nrutil.obj
     文件           0  2015-09-23 00:17  Sample\Debug\nrutil.sbr
     文件       20880  2015-09-23 11:08  Sample\Debug\OpenAndDspDlg.obj
............此处省略230个文件信息

评论

共有 条评论