MFC连续处理图像

问题背景:需要自动化的连续的处理500张图,一个一个地处理显然很幼稚,因此需要一个连续处理图像的函数。

 CString m_strFileOut = _T("");  //初始化适应Unicode
 TCHAR szSelected[MAX_PATH];//用来存放文件夹路径  
 BROWSEINFO bi;  
 LPITEMIDLIST pidl;  
 bi.hwndOwner = this->m_hWnd;  
 bi.pidlRoot = NULL;  
 bi.pszDisplayName = szSelected;  
 bi.lpszTitle = _T("选择输出文件路径");  
 bi.ulFlags = BIF_RETURNONLYFSDIRS;  
 bi.lpfn = NULL;  
 bi.lParam = NULL;  
 bi.iImage = NULL;  
 if((pidl = SHBrowseForFolder(&bi)) != NULL)  
 {  
  if(SUCCEEDED(SHGetPathFromIDList(pidl, szSelected))) //得到文件夹的全路径,不要的话,只得本文件夹名  
  {  
   m_strFileOut = szSelected;  	//获得文件夹的全路径
  }  
 }

执行完这段代码后m_strFileOut就保存了文件夹路径名。

/******************************************************************
 * 函数名:EnumFiles
 * 参数  :LPCTSTR lpPath 目标文件夹, LPCTSTR lpExt 要搜索的文件
          名,留空表示所有文件
 * 返回值:是否找到
 * 功能描述:示例:EnumFiles("C:\\windows\\system32", "*.dll");
******************************************************************
bool EnumFiles(LPCTSTR lpPath, LPCTSTR lpExt)
{
    char szFindCmd[MAX_PATH] = "";                                   
    WIN32_FIND_DATA FindFileData;

    HANDLE hFind;
    if (lpExt == NULL)
    {
        sprintf(szFindCmd, "%s\\*.*", lpPath);
    }
    else
    {
        sprintf(szFindCmd, "%s\\%s", lpPath, lpExt);
    }
 
    hFind = ::FindFirstFile(szFindCmd, &FindFileData);
    if(INVALID_HANDLE_VALUE == hFind)    
		return FALSE;
     
    while(TRUE)
    {
        if(! (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
        {   
            // 找到的是文件,而不是文件夹
            char szBuffer[MAX_PATH] = "";
            sprintf(szBuffer, "%s\\%s", lpPath, FindFileData.cFileName);
  
            // 找到的文件的路径是szBuffer,在这里加入你的图像处理代码
			CString str;
			str = szBuffer;

			m_MyDib.LoadFile(str);
		
        }
         
        if(!FindNextFile(hFind,&FindFileData))  
			break;
    }
    FindClose(hFind);
 
    return TRUE;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章