在文档类中重载OnFileSaveAs,调用GetFilterString创建文件类型过滤字符串,调用SaveDIB按指定格式保存位图,代码如下。
void CDIPDoc::OnFileSaveAs()
{
char szFilter[2048];
int nFileFormats = 0;
nFileFormats = GetFilterString(szFilter);
CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if(dlg.DoModal() == IDOK) {
CString strPathName, strExtList;
int nPos = 0, nFilterIndex;
nFilterIndex = dlg.m_ofn.nFilterIndex;
strPathName = dlg.GetPathName();
if(nFilterIndex > 1 && nFilterIndex <= FreeImage_GetFIFCount()){
strExtList = FreeImage_GetFIFExtensionList(
(FREE_IMAGE_FORMAT)(nFilterIndex-2));
nPos = strExtList.Find(',');
if(nPos == -1)
strPathName += "."+strExtList;
else
strPathName += "."+strExtList.Left(nPos);
}
SaveDIB(m_pFI, strPathName);
}
}
七、结语
FreeImage是一款简单易用,能够读写多种图像类型,以及图像类型之间的相互转换和位深度转换,其位图信息和位图数据由FIBITMAP数据结构维护,可以在此基础上实现高级的图像处理与分析算法,提高了软件开发效率。
|