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

📄 convertdoc.cpp

📁 本程序主要完成pic到tif图像格式的转换(由图象格式转换菜单实现)并且完成了读写pic,tif图像文件的源代码。File/open菜单完成在原始图中获取任意位置和大小的图像。
💻 CPP
字号:
// convertDoc.cpp : implementation of the CConvertDoc class
//

#include "stdafx.h"
#include "convert.h"

#include "convertDoc.h"
#include "SaveDialog.h"
#include "DialogGetImg.h"
#include "Image.h"

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

/////////////////////////////////////////////////////////////////////////////
// CConvertDoc

IMPLEMENT_DYNCREATE(CConvertDoc, CDocument)

BEGIN_MESSAGE_MAP(CConvertDoc, CDocument)
	//{{AFX_MSG_MAP(CConvertDoc)
	ON_COMMAND(ID_IMAGE_SAVEAS, OnImageSaveas)
	ON_COMMAND(ID_IMAGE_GET, OnImageGet)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CConvertDoc construction/destruction

CConvertDoc::CConvertDoc()
{
	// TODO: add one-time construction code here

}

CConvertDoc::~CConvertDoc()
{
}

BOOL CConvertDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// CConvertDoc serialization

void CConvertDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CConvertDoc diagnostics

#ifdef _DEBUG
void CConvertDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CConvertDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CConvertDoc commands

BOOL CConvertDoc::OnOpenDocument(LPCTSTR lpszPathName) 
{
	if (!CDocument::OnOpenDocument(lpszPathName))
		return FALSE;
	
	// TODO: Add your specialized creation code here
	myImage.ReadImageData((CString)lpszPathName); 	
	return TRUE;
}

//DEL BOOL CConvertDoc::OnSaveDocument(LPCTSTR lpszPathName) 
//DEL {
//DEL 	// TODO: Add your specialized code here and/or call the base class
//DEL     myImage.WriteImageFile((CString)lpszPathName,myImage.m_ImageHeight,
//DEL 		myImage.m_ImageWidth,myImage.imagedata);   //row,col
//DEL 	return TRUE;
//DEL //	return CDocument::OnSaveDocument(lpszPathName);
//DEL }

//DEL void CConvertDoc::OnFileSaveAs() 
//DEL {
//DEL 	// TODO: Add your command handler code here
//DEL 	
//DEL }

void CConvertDoc::OnImageSaveas() 
{
	// TODO: Add your command handler code here
	CSaveDialog dlg;

	dlg.m_filename="d:\\picture\\...";
	dlg.m_ImgHeight=myImage.m_ImageHeight;
	dlg.m_ImgWidth=myImage.m_ImageWidth;

	if(dlg.DoModal()==IDOK)
	{
	  myImage.strFile=dlg.m_filename;
      TRACE("myImage.strFile is %s,row=%d,col=%d/n",myImage.strFile,myImage.m_ImageHeight,myImage.m_ImageWidth);
	  myImage.WriteImageFile(myImage.strFile,myImage.m_ImageHeight,
		         myImage.m_ImageWidth,myImage.image);
	}
}

void CConvertDoc::OnImageGet() 
{
	// TODO: Add your command handler code here
	CDialogGetImg getImgDlg;

    getImgDlg.m_oriHeight=myImage.m_ImageHeight;
    getImgDlg.m_oriWidth=myImage.m_ImageWidth;
    
	if(getImgDlg.DoModal()==IDOK)
	{
		TRACE("%d,%d,%s",getImgDlg.m_height,getImgDlg.m_width,getImgDlg.m_file);
		///////////............
        if(getImgDlg.m_file=="..."||getImgDlg.m_height==0||getImgDlg.m_width==0)
		{
			MessageBox(NULL,"please input the filename and the image size!",
				NULL,MB_ABORTRETRYIGNORE);
    		//exit(1); //this will arise error!!!
		}
		unsigned char** cutImg;
		cutImg=new unsigned char* [getImgDlg.m_height];
		if(cutImg==NULL)
		{
			delete cutImg; 
			exit(1);
		}
		for(int i=0;i<getImgDlg.m_height;i++)
		{
			cutImg[i]=new unsigned char[getImgDlg.m_width];
			if(cutImg[i]==NULL)
			{
			delete cutImg[i]; 
			exit(1);
			}
		}
        for(i=0;i<getImgDlg.m_height;i++)
			for(int j=0;j<getImgDlg.m_width;j++)
				cutImg[i][j]=myImage.image[i+getImgDlg.m_ytop][j+getImgDlg.m_xleft];
		
		myImage.WriteImageFile(getImgDlg.m_file,getImgDlg.m_height,getImgDlg.m_width,cutImg);
		for(i=0;i<getImgDlg.m_height;i++)			
			delete cutImg[i]; 

         delete cutImg;
		///////////.............
	}	
}

⌨️ 快捷键说明

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