資源簡介
數字圖像處理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個文件信息
- 上一篇:文件加密軟件與信息隱藏
- 下一篇:H264 TS打包C語言源代碼
評論
共有 條評論