⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dibdoc.cpp

📁 这是一款蛮COOL的图像处理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		{
			if(CImgProcess::LowPassDIB(m_hDIB, FD.m_nStreng, FILTER1))
			{
				InitDIBData();
				SetModifiedFlag(TRUE);
	//			OnRealizePal((WPARAM)0, 0);  // realize the new palette
				UpdateAllViews(NULL);
			}
		}
	}
	else if(ID_IMAGE_SMOTH_LF2 == uID)
	{
		CConvoluteDlg FD(1, 10, 3);
		if (FD.DoModal() == IDOK)
		{
			if(CImgProcess::LowPassDIB(m_hDIB, FD.m_nStreng, FILTER2))
			{
				InitDIBData();
				SetModifiedFlag(TRUE);
	//			OnRealizePal((WPARAM)0, 0);  // realize the new palette
				UpdateAllViews(NULL);
			}
		}
	}
	else if(ID_IMAGE_SMOTH_LF3 == uID)
	{
		CConvoluteDlg FD(1, 10, 3);
		if (FD.DoModal() == IDOK)
		{
			if(CImgProcess::LowPassDIB(m_hDIB, FD.m_nStreng, FILTER3))
			{
				InitDIBData();
				SetModifiedFlag(TRUE);
	//			OnRealizePal((WPARAM)0, 0);  // realize the new palette
				UpdateAllViews(NULL);
			}
		}
	}
	else if(ID_IMAGE_SHARP_HF1 == uID)
	{
		CConvoluteDlg FD(1, 10, 3);
		if (FD.DoModal() == IDOK)
		{
			if(CImgProcess::HighPassDIB(m_hDIB, FD.m_nStreng, FILTER1))
			{
				InitDIBData();
				SetModifiedFlag(TRUE);
	//			OnRealizePal((WPARAM)0,0);  // realize the new palette
				UpdateAllViews(NULL);
			}
		}
	}
	else if(ID_IMAGE_SHARP_HF2 == uID)
	{
		CConvoluteDlg FD(1, 10, 3);
		if (FD.DoModal() == IDOK)
		{
			if(CImgProcess::HighPassDIB(m_hDIB, FD.m_nStreng, FILTER2))
			{
				InitDIBData();
				SetModifiedFlag(TRUE);
	//			OnRealizePal((WPARAM)0,0);  // realize the new palette
				UpdateAllViews(NULL);
			}
		}
	}
	else if(ID_IMAGE_SHARP_HF3 == uID)
	{
		CConvoluteDlg FD(1, 10, 3);
		if (FD.DoModal() == IDOK)
		{
			if(CImgProcess::HighPassDIB(m_hDIB, FD.m_nStreng, FILTER3))
			{
				InitDIBData();
				SetModifiedFlag(TRUE);
	//			OnRealizePal((WPARAM)0,0);  // realize the new palette
				UpdateAllViews(NULL);
			}
		}
	}
	else if(ID_IMAGE_EDGE_H == uID)
	{
		EdgeEnhance(HORZ);
	}
	else if(ID_IMAGE_EDGE_V == uID)
	{
		EdgeEnhance(VERT);
	}
	else if(ID_IMAGE_EDGE_VH == uID)
	{
		EdgeEnhance(VERTHORZ);
	}
	else if(ID_IMAGE_EDGE_N == uID)
	{
		EdgeEnhance(NORTH);
	}
	else if(ID_IMAGE_EDGE_NE == uID)
	{
		EdgeEnhance(NORTHEAST);
	}
	else if(ID_IMAGE_EDGE_E == uID)
	{
		EdgeEnhance(EAST);
	}
	else if(ID_IMAGE_EDGE_SE == uID)
	{
		EdgeEnhance(SOUTHEAST);
	}
	else if(ID_IMAGE_EDGE_S == uID)
	{
		EdgeEnhance(SOUTH);
	}
	else if(ID_IMAGE_EDGE_SW == uID)
	{
		EdgeEnhance(SOUTHWEST);
	}
	else if(ID_IMAGE_EDGE_W == uID)
	{
		EdgeEnhance(WEST);
	}
	else if(ID_IMAGE_EDGE_NW == uID)
	{
		EdgeEnhance(NORTHWEST);
	}
	else if(ID_IMAGE_EDGE_LP1 == uID)
	{
		EdgeEnhance(LAP1);
	}
	else if(ID_IMAGE_EDGE_LP2 == uID)
	{
		EdgeEnhance(LAP2);
	}
	else if(ID_IMAGE_EDGE_LP3 == uID)
	{
		EdgeEnhance(LAP3);
	}
	else if(ID_IMAGE_EDGE_LP4 == uID)
	{
		EdgeEnhance(LAP4);
	}
	else if(ID_IMAGE_CONTOUR_H == uID)
	{
		if(CImgProcess::ContourDIB(m_hDIB, TRUE))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_CONTOUR_V == uID)
	{
		if(CImgProcess::ContourDIB(m_hDIB, FALSE))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_CONTOUR_SOBER == uID)
	{
		EdgeEnhance(SOBEL);
	}
	else if(ID_IMAGE_CONTOUR_HOUGH == uID)
	{
		EdgeEnhance(HOUGH);
	}
	else if(ID_IMAGE_REVERSE == uID)
	{
		if(CImgProcess::ReverseDIB(m_hDIB))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_FFT == uID)
	{
		if(CImgProcess::FFTDIB(m_hDIB))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_DCT == uID)
	{
		if(CImgProcess::DCTDIB(m_hDIB))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_WALH == uID)
	{
		if(CImgProcess::WALhDIB(m_hDIB))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_EROSION_H == uID)
	{
		if(CImgProcess::ErosionDIB(m_hDIB, TRUE))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_EROSION_V == uID)
	{
		if(CImgProcess::ErosionDIB(m_hDIB, FALSE))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_DILATION_H == uID)
	{
		if(CImgProcess::DilationDIB(m_hDIB, TRUE))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_DILATION_V == uID)
	{
		if(CImgProcess::DilationDIB(m_hDIB, FALSE))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_CLOSE_H == uID)
	{
		if(CImgProcess::MorphCloseDIB(m_hDIB, TRUE))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_CLOSE_V == uID)
	{
		if(CImgProcess::MorphCloseDIB(m_hDIB, FALSE))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_OPEN_H == uID)
	{
		if(CImgProcess::MorphOpenDIB(m_hDIB, TRUE))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_OPEN_V == uID)
	{
		if(CImgProcess::MorphOpenDIB(m_hDIB, FALSE))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else if(ID_IMAGE_THIN == uID)
	{
		if(CImgProcess::ThinningDIB(m_hDIB))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
	//		OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
	else
	{
		AfxMessageBox("Hi, what are you doing?");
	}

	CTimeSpan t_Span = CTime::GetCurrentTime() - t_Start;
	CString strStatus = t_Span.Format("Elapsed time- %H : %M : %S");
	((CMainFrame*)AfxGetMainWnd())->SetStatusText(0, strStatus);
}

void CDIBDoc::OnUpdateImageProcess(CCmdUI *pCmdUI)
{
	pCmdUI->Enable(NULL != m_hDIB);
}

void CDIBDoc::EdgeEnhance(int nAlgorithm)
{
	CConvoluteDlg FD(1, 10, 3);
	if (FD.DoModal() == IDOK)
	{
		if(CImgProcess::EdgeEnhanceDIB(m_hDIB, FD.m_nStreng, nAlgorithm))
		{
			InitDIBData();
			SetModifiedFlag(TRUE);
//			OnRealizePal((WPARAM)0, 0);  // realize the new palette
			UpdateAllViews(NULL);
		}
	}
}

BOOL CDIBDoc::EnumFile(LPCTSTR lpszPathName)
{
	ASSERT(strlen(lpszPathName) > 0);

	BeginWaitCursor();

	char *pExt=strrchr(lpszPathName,'.');
	char cExt[4];
	strcpy(cExt,++pExt);
	_strlwr(cExt);
	DeleteContents();
	HDIB hDIB = NULL;
	
	if (strcmp(cExt,"raw")==0)
	{
		CRaw raw;
		if(!raw.ReadFromFile(lpszPathName))
		{
			return FALSE;
		}
		hDIB = raw.Show();
	}
	else if(strcmp(cExt,"bmp")==0
		|| strcmp(cExt,"dib")==0
		|| strcmp(cExt,"ddb")==0)
	{
		CFile file;
		CFileException fe;
		if (!file.Open(lpszPathName, CFile::modeRead | CFile::shareDenyWrite, &fe))
		{
			fe.ReportError();
			return NULL;
		}
		// replace calls to Serialize with ReadDIBFile function
		TRY
		{
			hDIB = ::ReadDIBFile(file);
		}
		CATCH (CFileException, eLoad)
		{
			file.Abort(); // will not throw an exception
			eLoad->ReportError();
			hDIB = NULL;
			return NULL;
		}
		END_CATCH
		if (hDIB == NULL)
		{
			// may not be DIB format
			CString strMsg;
			strMsg.LoadString(IDS_CANNOT_LOAD_DIB);
			MessageBox(NULL, strMsg, NULL, MB_ICONINFORMATION | MB_OK);
			return NULL;
		}
	}
	else if(strcmp(cExt,"jpg")==0 || strcmp(cExt,"jpeg")==0)
	{
		UINT height,width;
		BYTE *pData = NULL;
		pData = JpegFile::JpegFileToRGB(lpszPathName, &width, &height);
		if(NULL == pData)return NULL;
		JpegFile::BGRFromRGB(pData, width, height);
		JpegFile::VertFlipBuf(pData, width * 3, height);
		
		UINT widthDW;
		BYTE *pDIB = JpegFile::MakeDwordAlignedBuf(pData, width, height, &widthDW);
		
		delete []pData;
		if(NULL == pDIB)
		{
			char strErr[100];
			sprintf(strErr, "Error: %d", GetLastError());
			MessageBox(AfxGetMainWnd()->GetSafeHwnd(), strErr, "Read File Error",
				MB_OK|MB_ICONERROR);
		}
		hDIB = ::ShowJPEG(width, height, pDIB);
		delete []pDIB;
	}
	else if(strcmp(cExt, "gif") == 0)
	{
		hDIB = ReadGIF(lpszPathName);
	}
	else if(strcmp(cExt,"pcx") == 0)
	{
		hDIB = ::ReadPCX256(lpszPathName);
	}
	else
	{
		//		CString strMsg;
		//		strMsg.Format("%s\n不是图像文件!", lpszPathName);
		AfxMessageBox("不识别的文件格式!");
		return FALSE;
	}
	
	if(NULL != hDIB)
	{
		ReplaceHDIB(hDIB);
		InitDIBData();
	}
	else
	{
		return FALSE;
	}
	SetPathName(lpszPathName);
	char *pTitle = strrchr(lpszPathName, '\\');
	SetTitle(++pTitle);
	SetModifiedFlag(FALSE);
	EndWaitCursor();
	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -