亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cdib.cpp

?? vc++數字圖像處理 ,是一本很不錯的介紹數字圖像方面的書籍,這里有本書的全部源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	 		::DeleteObject(hBitmap);			delete [] lpBMIH;			::SelectPalette(hdc, hOldPalette, FALSE);			return FALSE; 		}		else		{			m_dwSizeImage = lpBMIH->biSizeImage;		}	}	else	{		lpBMIH->biCompression = BI_RGB; // decompress		// figure the image size from the bitmap width and height		DWORD dwBytes = ((DWORD) lpBMIH->biWidth * lpBMIH->biBitCount) / 32;		if(((DWORD) lpBMIH->biWidth * lpBMIH->biBitCount) % 32)		{			dwBytes++;		}		dwBytes *= 4;		m_dwSizeImage = dwBytes * lpBMIH->biHeight; // no compression		lpBMIH->biSizeImage = m_dwSizeImage;	} 	// second GetDIBits call to make DIB	LPBYTE lpImage = (LPBYTE) new char[m_dwSizeImage];	VERIFY(::GetDIBits(pDC->GetSafeHdc(), hBitmap, 0, (UINT) lpBMIH->biHeight,    		lpImage, (LPBITMAPINFO) lpBMIH, DIB_RGB_COLORS));    TRACE("dib successfully created - height = %d\n", lpBMIH->biHeight);	::DeleteObject(hBitmap);	Empty();	m_nBmihAlloc = m_nImageAlloc = crtAlloc;	m_lpBMIH = lpBMIH;	m_lpImage = lpImage;	ComputeMetrics();	ComputePaletteSize(m_lpBMIH->biBitCount);	MakePalette();	::SelectPalette(hdc, hOldPalette, FALSE);	TRACE("Compress: new palette size = %d\n", m_nColorTableEntries); 	return TRUE;}BOOL CDib::Read(CFile* pFile){	// 1. read file header to get size of info hdr + color table	// 2. read info hdr (to get image size) and color table	// 3. read image	// can't use bfSize in file header		// 清除DIB	Empty();		int nCount, nSize;	BITMAPFILEHEADER bmfh;		// 嘗試讀取BMP文件	try	{		// 讀BMP文件頭		nCount = pFile->Read((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER));				// 判斷讀取文件頭的大小是否		if(nCount != sizeof(BITMAPFILEHEADER))		{			// 讀文件出錯			throw new CException;		}				// 判斷是否是"BM"		if(bmfh.bfType != 0x4d42)		{			// 不是BMP文件,拋出異常			throw new CException;		}		nSize = bmfh.bfOffBits - sizeof(BITMAPFILEHEADER);		m_lpBMIH = (LPBITMAPINFOHEADER) new char[nSize];		m_nBmihAlloc = m_nImageAlloc = crtAlloc;		nCount = pFile->Read(m_lpBMIH, nSize); // info hdr & color table		ComputeMetrics();		ComputePaletteSize(m_lpBMIH->biBitCount);		MakePalette();		m_lpImage = (LPBYTE) new char[m_dwSizeImage];		nCount = pFile->Read(m_lpImage, m_dwSizeImage); // image only	}	catch(CException* pe)	{		AfxMessageBox("Read error");		pe->Delete();		return FALSE;	}	return TRUE;}BOOL CDib::ReadSection(CFile* pFile, CDC* pDC /* = NULL */){	// new function reads BMP from disk and creates a DIB section	//    allows modification of bitmaps from disk	// 1. read file header to get size of info hdr + color table	// 2. read info hdr (to get image size) and color table	// 3. create DIB section based on header parms	// 4. read image into memory that CreateDibSection allocates	Empty();	int nCount, nSize;	BITMAPFILEHEADER bmfh;	try	{		nCount = pFile->Read((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER));		if(nCount != sizeof(BITMAPFILEHEADER))		{			throw new CException;		}		if(bmfh.bfType != 0x4d42)		{			throw new CException;		}		nSize = bmfh.bfOffBits - sizeof(BITMAPFILEHEADER);		m_lpBMIH = (LPBITMAPINFOHEADER) new char[nSize];		m_nBmihAlloc = crtAlloc;		m_nImageAlloc = noAlloc;		nCount = pFile->Read(m_lpBMIH, nSize); // info hdr & color table		if(m_lpBMIH->biCompression != BI_RGB)		{			throw new CException;		}		ComputeMetrics();		ComputePaletteSize(m_lpBMIH->biBitCount);		MakePalette();		UsePalette(pDC);		m_hBitmap = ::CreateDIBSection(pDC->GetSafeHdc(), (LPBITMAPINFO) m_lpBMIH,			DIB_RGB_COLORS,	(LPVOID*) &m_lpImage, NULL, 0);		ASSERT(m_lpImage != NULL);		nCount = pFile->Read(m_lpImage, m_dwSizeImage); // image only	}	catch(CException* pe)	{		AfxMessageBox("ReadSection error");		pe->Delete();		return FALSE;	}	return TRUE;}BOOL CDib::Write(CFile* pFile){	BITMAPFILEHEADER bmfh;	bmfh.bfType = 0x4d42;  // 'BM'	int nSizeHdr = sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries;	bmfh.bfSize = 0;	// bmfh.bfSize = sizeof(BITMAPFILEHEADER) + nSizeHdr + m_dwSizeImage;	// meaning of bfSize open to interpretation (bytes, words, dwords?) -- we won't use it	bmfh.bfReserved1 = bmfh.bfReserved2 = 0;	bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) +			sizeof(RGBQUAD) * m_nColorTableEntries;		try	{		pFile->Write((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER));		pFile->Write((LPVOID) m_lpBMIH,  nSizeHdr);		pFile->Write((LPVOID) m_lpImage, m_dwSizeImage);	}	catch(CException* pe)	{		pe->Delete();		AfxMessageBox("write error");		return FALSE;	}	return TRUE;}void CDib::Serialize(CArchive& ar){	DWORD dwPos;	dwPos = ar.GetFile()->GetPosition();	TRACE("CDib::Serialize -- pos = %d\n", dwPos);	ar.Flush();	dwPos = ar.GetFile()->GetPosition();	TRACE("CDib::Serialize -- pos = %d\n", dwPos);	if(ar.IsStoring())	{		Write(ar.GetFile());	}	else	{		Read(ar.GetFile());	}}// helper functionsvoid CDib::ComputePaletteSize(int nBitCount){	if((m_lpBMIH == NULL) || (m_lpBMIH->biClrUsed == 0))	{		switch(nBitCount)		{			case 1:				m_nColorTableEntries = 2;				break;			case 4:				m_nColorTableEntries = 16;				break;			case 8:				m_nColorTableEntries = 256;				break;			case 16:			case 24:			case 32:				m_nColorTableEntries = 0;				break;			default:				ASSERT(FALSE);		}	}	else	{		m_nColorTableEntries = m_lpBMIH->biClrUsed;	}	ASSERT((m_nColorTableEntries >= 0) && (m_nColorTableEntries <= 256)); }void CDib::ComputeMetrics(){	if(m_lpBMIH->biSize != sizeof(BITMAPINFOHEADER))	{		TRACE("Not a valid Windows bitmap -- probably an OS/2 bitmap\n");		throw new CException;	}	m_dwSizeImage = m_lpBMIH->biSizeImage;	if(m_dwSizeImage == 0)	{		DWORD dwBytes = ((DWORD) m_lpBMIH->biWidth * m_lpBMIH->biBitCount) / 32;		if(((DWORD) m_lpBMIH->biWidth * m_lpBMIH->biBitCount) % 32)		{			dwBytes++;		}		dwBytes *= 4;		m_dwSizeImage = dwBytes * m_lpBMIH->biHeight; // no compression	}	m_lpvColorTable = (LPBYTE) m_lpBMIH + sizeof(BITMAPINFOHEADER);}void CDib::Empty(){	// this is supposed to clean up whatever is in the DIB	DetachMapFile();	if(m_nBmihAlloc == crtAlloc)	{		delete [] m_lpBMIH;	}	else if(m_nBmihAlloc == heapAlloc)	{		::GlobalUnlock(m_hGlobal);		::GlobalFree(m_hGlobal);	}	if(m_nImageAlloc == crtAlloc)	{		delete [] m_lpImage;	}	if(m_hPalette != NULL)	{		::DeleteObject(m_hPalette);	}	if(m_hBitmap != NULL)	{		::DeleteObject(m_hBitmap);	}	m_nBmihAlloc = m_nImageAlloc = noAlloc;	m_hGlobal = NULL;	m_lpBMIH = NULL;	m_lpImage = NULL;	m_lpvColorTable = NULL;	m_nColorTableEntries = 0;	m_dwSizeImage = 0;	m_lpvFile = NULL;	m_hMap = NULL;	m_hFile = NULL;	m_hBitmap = NULL;	m_hPalette = NULL;}void CDib::DetachMapFile(){	if(m_hFile == NULL)	{		return;	}	::UnmapViewOfFile(m_lpvFile);	::CloseHandle(m_hMap);	::CloseHandle(m_hFile);	m_hFile = NULL;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级电影网站| 综合在线观看色| 国产亚洲欧美一区在线观看| ...中文天堂在线一区| 日本不卡在线视频| 91在线精品一区二区三区| 91精品一区二区三区久久久久久 | 国产在线精品一区二区夜色| 北岛玲一区二区三区四区| 欧美哺乳videos| 亚洲国产精品久久久久婷婷884| 国产成人免费高清| 日韩久久久精品| 亚洲国产日日夜夜| 色诱亚洲精品久久久久久| 久久久综合网站| 老司机一区二区| 欧美另类变人与禽xxxxx| 国产精品久久久久久久久搜平片| 亚洲午夜成aⅴ人片| 91丨porny丨户外露出| 国产午夜亚洲精品不卡| 精品无人码麻豆乱码1区2区| 在线播放日韩导航| 亚洲成人动漫在线免费观看| voyeur盗摄精品| 欧美激情综合在线| 国产酒店精品激情| 久久久久国产精品人| 国产一区二区三区在线观看免费 | 亚洲欧美另类图片小说| 国产精品99久久久久久久女警 | 在线日韩av片| 亚洲男人天堂av网| 在线观看日韩电影| 亚洲一区二区三区中文字幕在线| 91老师片黄在线观看| 中文字幕在线观看不卡视频| eeuss鲁片一区二区三区 | 日韩码欧中文字| 处破女av一区二区| 亚洲丝袜另类动漫二区| 91在线看国产| 亚洲动漫第一页| 欧美日韩和欧美的一区二区| 日一区二区三区| 欧美一级高清大全免费观看| 久久97超碰国产精品超碰| 精品成人在线观看| 大尺度一区二区| 亚洲乱码日产精品bd| 欧洲精品中文字幕| 麻豆精品在线观看| 亚洲一区二区欧美日韩| 欧美精品国产精品| 另类欧美日韩国产在线| 久久久激情视频| 91一区二区在线观看| 香蕉久久夜色精品国产使用方法 | 成人网在线免费视频| 综合久久综合久久| 欧美日韩久久不卡| 国产一区二区在线视频| 国产精品不卡在线| 色哟哟精品一区| 日韩黄色片在线观看| 久久久精品欧美丰满| 一本色道久久加勒比精品| 奇米888四色在线精品| 久久久蜜桃精品| 在线观看三级视频欧美| 免费高清在线视频一区·| 国产欧美日韩三级| 欧美午夜精品久久久久久孕妇 | 成人一级黄色片| 亚洲高清三级视频| 久久色在线视频| 91视频com| 激情文学综合插| 亚洲小说欧美激情另类| 精品久久久久久久人人人人传媒 | 久久久久99精品一区| 日本韩国欧美在线| 国产精品亚洲第一| 日本成人在线不卡视频| 亚洲视频精选在线| 久久美女高清视频| 91精品国产色综合久久ai换脸| 成人久久久精品乱码一区二区三区 | 日韩一级片网站| 99国产精品一区| 国产精品2024| 免费人成网站在线观看欧美高清| 亚洲天堂精品在线观看| 久久精品视频一区二区| 67194成人在线观看| 91网站在线播放| 成人一级视频在线观看| 精品午夜久久福利影院| 日韩在线观看一区二区| 亚洲精品videosex极品| 日本一二三不卡| 欧美电影免费观看完整版| 欧美人伦禁忌dvd放荡欲情| 色欧美88888久久久久久影院| 国产成人av一区| 国产在线一区观看| 麻豆91小视频| 色婷婷综合在线| 成人综合婷婷国产精品久久蜜臀| 精品影视av免费| 免费不卡在线视频| 免费欧美高清视频| 日韩国产欧美在线视频| 午夜av电影一区| 日韩中文字幕一区二区三区| 亚洲成人tv网| 午夜精品在线视频一区| 亚洲国产精品精华液网站| 亚洲午夜羞羞片| 午夜欧美电影在线观看| 亚洲成年人网站在线观看| 午夜精品一区二区三区三上悠亚 | 亚洲国产人成综合网站| 亚洲男人的天堂在线观看| 亚洲日本在线视频观看| 一区二区三区四区视频精品免费 | 91精品国产综合久久精品麻豆| 欧美羞羞免费网站| 欧美吻胸吃奶大尺度电影 | 日韩一区二区在线观看视频播放| 欧美一区二区三区四区视频| 欧美一区二区福利在线| 精品日产卡一卡二卡麻豆| 久久综合久久综合久久综合| 国产视频视频一区| 亚洲日穴在线视频| 亚洲电影一级片| 蜜桃久久av一区| 国产福利91精品一区二区三区| av在线免费不卡| 欧美午夜影院一区| 91精品国产乱| 国产亚洲一本大道中文在线| 成人欧美一区二区三区视频网页 | 成人久久久精品乱码一区二区三区| 成人av网址在线| 欧美日韩在线播| 久久久精品蜜桃| 一区二区三区国产精品| 蜜桃视频在线观看一区| 成人h精品动漫一区二区三区| 欧美在线免费观看亚洲| 日韩精品专区在线影院观看| 国产精品久久网站| 三级一区在线视频先锋| 成人亚洲精品久久久久软件| 欧美蜜桃一区二区三区| 国产情人综合久久777777| 亚洲一二三区不卡| 国产在线国偷精品产拍免费yy| 99国产精品久久久久| 欧美一区二区三区性视频| 国产精品久久福利| 久久国产尿小便嘘嘘尿| 精品久久国产字幕高潮| 亚洲在线中文字幕| 国产精品77777| 56国语精品自产拍在线观看| 国产女人18毛片水真多成人如厕| 天天影视色香欲综合网老头| 成人免费福利片| 精品免费99久久| 无吗不卡中文字幕| 91无套直看片红桃| 国产欧美日本一区二区三区| 午夜激情一区二区三区| 色综合激情久久| 中文字幕免费在线观看视频一区| 日韩成人一级大片| 欧美最新大片在线看| 国产精品久久久久精k8| 国产乱人伦偷精品视频不卡 | 91丝袜美女网| 国产欧美一区二区精品性| 老司机免费视频一区二区| 欧美日韩欧美一区二区| 日韩毛片在线免费观看| 成人av在线观| 国产午夜久久久久| 国产一区二区女| 日韩美女一区二区三区| 日韩中文字幕亚洲一区二区va在线 | 欧美三级在线看| 日韩理论在线观看| 成人av午夜影院| 亚洲欧洲美洲综合色网| 成人动漫一区二区三区| 国产欧美日韩不卡| 成人免费视频免费观看|