亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于文件搜索功能的圖像融合程序?qū)崿F(xiàn)

        2014-08-21 14:10:44何源
        科技與創(chuàng)新 2014年11期
        關鍵詞:應用程序

        摘 要:針對現(xiàn)有的圖像融合軟件在讀入大量圖像并進行重復操作時不能實現(xiàn)批量自動化操作的問題,提出了使用文件搜索功能來改變現(xiàn)狀的方法。分析了MFC類庫中文件讀寫和文件搜索的相關函數(shù),討論了各函數(shù)的功能和所需要傳遞的參數(shù)。利用MFC類庫的文件讀寫和文件搜索的相關函數(shù),設計出了高效、自動傳遞并讀寫數(shù)據(jù)的圖像融合程序。該程序節(jié)省了用戶進行大量重復性工作的時間。實驗證明,該程序性能良好,并且用戶友好度較高。

        關鍵詞:文件搜索;MFC;CFileFind;應用程序

        中圖分類號:TP391.41 文獻標識碼:A 文章編號:2095-6835(2014)11-0126-02

        在開發(fā)Windows應用程序時,常常要將搜索程序應用到相關文件中。假如應用程序沒有自動搜索文件的功能,就需要用戶手動,一個一個地選擇文件并進行相關操作,這樣不僅費時費力、用戶友好度極低,而且在工作量較大的情況下,難免會出現(xiàn)操作失誤的情況,影響用戶的工作效率。微軟基礎類庫封裝了大量的Windows API函數(shù),其中就包含文件搜索的相關函數(shù),為應用程序開發(fā)者提供了便利的條件。

        1 MFC類庫及程序使用的相關函數(shù)介紹

        微軟基礎類庫(Microsoft Foundation Classes Library),簡稱MFC,是微軟公司在C++編程語言的基礎上實現(xiàn)的一個基礎類庫,它是一種面向?qū)ο蟮暮瘮?shù)庫。在這個類庫中,封裝了Windows操作系統(tǒng)關于窗口式用戶接口的基礎函數(shù),這樣程序開發(fā)者就不必再編寫大量復雜的窗口響應實現(xiàn)代碼,只需編寫具體功能實現(xiàn)程序即可。這樣做免去了大量繁重的重復性工作,使得基于Windows操作系統(tǒng)的應用程序開發(fā)變得簡單、快捷,大大縮短了程序開發(fā)的周期。

        MFC搭建了一個應用程序框架,我們需要做的只是根據(jù)具體的應用場景選擇合適的框架,并且為框架填充具有實際用途的內(nèi)容。同時,MFC還為我們提供了很多輔助資源,例如向?qū)?、圖標、位圖等,讓開發(fā)者可以編寫出用戶友好度較高的界面接口應用程序。

        MFC類庫奉行單繼承的風格,所以,其所有的類都繼承自一個唯一的根類,即CObject。CFile類繼承自CObject類,是以二進制的方式讀取和寫入文件的類。CFile類封裝了Win32環(huán)境下的文件創(chuàng)建、文件讀寫等文件操作相關函數(shù)。CFile類的主要方法有:①CFile,一個路徑和文件句柄構造一個CFile對象;②Read,將文件讀取到一塊緩存上;③Write,將緩存中的數(shù)據(jù)寫入指定文件中等。

        文中用到的函數(shù)主要有以下兩種。

        1.1 文件類構造函數(shù)CStdioFile

        文件類構造函數(shù)CStdioFile(LPCTSTR lpszFileName,UINT nOpenFlags),其中,第一個參數(shù)為創(chuàng)建文件的文件名,第二個參數(shù)則為文件打開模式。常用的模式有4種:①CFile::modeRead以只讀的方式打開;②CFile::modeWrite則以可寫的方式打開;③CFile::modeReadWrite以讀寫方式打開;④CFile::modeCreate創(chuàng)建并打開。以上模式均可組合使用,并用“|”相互隔開。

        1.2 CArchive::Write

        CArchive::Write(const void* lpBuf,UINT nMax),向文件中寫入字符串,參數(shù)1是一個向用戶提供緩存的指針,該緩存包含需要寫入文件中的數(shù)據(jù);參數(shù)2為一個無符號的整數(shù),用于表示寫入數(shù)據(jù)的字節(jié)數(shù)。

        CFileFind類是MFC中用作搜索文件的類。CFileFind類不但可用于搜索本地文件,也可以用于搜索網(wǎng)絡文件。通過向其傳遞文件名和文件路徑等參數(shù),即可實現(xiàn)文件的搜索功能。CFileFind類的主要方法有以下4種:①CFileFind,構造CFliefind對象;②GetFileName,可以獲取搜索到帶有擴展名的相關文件;③GetFilePath,可以獲取搜索到的文件的路徑;④FindNextFile,繼續(xù)先前的搜索調(diào)用等。

        本文文件搜索功能主要是基于CFile和CFileFind兩個基類實現(xiàn)的。

        2 基于文件搜索功能的圖像融合程序

        2.1 設計思路

        該程序是通過調(diào)用控制臺應用程序enblend,利用enblend自帶的圖像融合功能,對兩幅或兩幅以上的圖像進行融合。圖像融合不是本文的討論重點,所以不在此贅述,有興趣的讀者可以查閱相關資料。

        調(diào)用一個控制臺應用程序的方法有很多,比如,在VC 中直接通過調(diào)用函數(shù)實現(xiàn),但是,這種方法在需要傳遞復雜參數(shù)或數(shù)據(jù)量較大的情況下,會出現(xiàn)調(diào)用失敗或者運行時間過長的情況,甚至會因為占用太多內(nèi)存而出現(xiàn)系統(tǒng)崩潰的狀況,使得簡單問題復雜化。最簡單的調(diào)用方法就是新建一個bat批處理文件,通過運行批處理文件達到調(diào)用控制臺程序的目的。這種方法方便、快捷,在處理大量數(shù)據(jù)時尤為高效,但是,每次調(diào)用都需要手動重新編寫批處理文件,費事費力而且容易出錯。因此,現(xiàn)在的問題就轉變?yōu)槿绾卧O計一個用戶界面,讓用戶只需要點擊鼠標即可完成創(chuàng)建bat文件并調(diào)用控制臺程序的過程。

        2.2 實現(xiàn)流程

        該程序的開發(fā)環(huán)境為Visual C++ 6.0,利用MFC創(chuàng)建一個對話框應用程序,通過點擊對話框按鈕實現(xiàn)此程序的功能。

        要實現(xiàn)程序功能的具體做法是:新建一個MFC AppWizard工程文件,文件名可以取為“FindImg”,選擇基本對話框應用程序類型,點擊完成。在生成的對話框界面上,新建一個編輯框和兩個按鈕,兩個按鈕的名稱分別修改為“選擇文件夾”“融合圖像”。編輯框用于顯示所選取文件夾的路徑;“選擇文件夾”按鈕用于選取圖像所在的文件夾,并搜索該文件夾下的所有圖片文件,然后將其寫入bat文件;“融合圖像”按鈕用于運行bat文件,調(diào)用enblend對圖像進行融合。endprint

        搜素圖片文件功能的實現(xiàn)的步驟是雙擊“選擇文件夾”按鈕,添加代碼如下(//后為對該行代碼的解釋):

        void CDfsDlg::OnSlectFile()

        { CString str;

        char m_ImageDir[512];

        CString m_Path;

        CFileFind find;

        CStdioFile file("find.bat",CFile::modeCreate|CFile::mod eReadWrite);

        //新建一個文件名為“find”的bat文件,文件模式為讀寫;

        file.Write("cd \\enblend所在文件夾路徑\n",strlen("cd \\enblend所在文件夾路徑\\n"));

        //在bat文件中寫入數(shù)據(jù),調(diào)用enblend控制臺程序;

        BROWSEINFO bi;//創(chuàng)建選擇文件夾對話框;

        TCHAR name[MAX_PATH];

        name[0]='d';

        ZeroMemory(&bi,sizeof(BROWSEINFO));

        bi.hwndOwner=GetSafeHwnd();

        bi.pszDisplayName=name;

        bi.lpszTitle=_T("Select folder");//設置選擇文件夾對話框的標題;

        bi.ulFlags=0x80;

        LPITEMIDLIST idl=SHBrowseForFolder(&bi);

        if(idl==NULL)

        return;

        SHGetPathFromIDList(idl,str.GetBuffer(MAX_PATH));

        str.ReleaseBuffer();

        m_Path=str;

        if(str.GetAt(str.GetLength()-1)!='\\')

        m_Path+="\\";

        UpdateData(FALSE);

        Memcpy(m_ImageDir,m_Path,m_Path.GetLength());//獲取文件夾路徑字串;

        m_ImageDir[m_Path.GetLength()]='\0';//字串一定要以\0結尾,否則程序會報錯;

        SetDlgItemText(IDC_LUJING, m_ImageDir);//將文件夾路徑顯示到編輯框中;

        strcat(m_ImageDir,"*.tif");

        //由于enblend只能讀取tif格式的圖像,所以,程序要搜索該文件夾所有tif格式的圖像;

        bool finded;

        finded=find.FindFile(m_ImageDir);

        while(finded)

        //如果直接將FindFile的返回值作為判斷條件的話,不僅搜索結果會少1個圖片文件,而且當文件夾內(nèi)沒有圖片時,程序也會出錯;

        { finded=find.FindNextFile();

        CString text=find.GetFileName();

        text+="\n";

        file.Write(text,text.GetLength());}

        file.Write("\npause",strlen("\npause"));//把查找到的結果寫入bat文件內(nèi);

        MessageBox(“輸入圖片成功!”);

        //數(shù)據(jù)成功寫入bat文件,彈出消息框,提示用戶圖像輸入成功;

        file.Close();//程序運行結束,清理內(nèi)存中的文件;}

        調(diào)用控制臺應用程序?qū)崿F(xiàn)的步驟是雙擊“圖像融合”按鈕,添加點擊按鈕的事件響應代碼,具體情況如下:

        void CDfsDlg::OnBlendImg()

        { WinExec("..\\FindImg \\find.bat",SW_SHOWNORMAL);

        //用WInExec函數(shù)調(diào)用bat,從而達到運行enblend程序融合圖像的目的;}

        編寫完以上全部源代碼后,便可以編譯運行程序,點擊“選擇文件夾”按鈕便可以搜索獲取任意文件夾下的所有圖片,并將其傳遞給enblend圖像融合程序。點擊“圖像融合”按鈕,便可調(diào)用enblend程序完成圖像融合的過程。實驗證明,該程序操作簡單,運行性能良好,在數(shù)據(jù)量較大的情況下,運行速度依然較快。

        3 總結

        本文著重討論了基于文件搜索功能下圖像融合程序的實現(xiàn)過程,事實上,基于文件搜索功能可以實現(xiàn)很多具有其他功能的程序,文中的圖像融合只是其中一個方面的應用。因為絕大多數(shù)的應用程序都需要讀入文件數(shù)據(jù)來實現(xiàn)自身的實際功能,文件搜索功能可以實現(xiàn)程序讀入文件數(shù)據(jù)的自動化,極大地提高了應用程序的工作效率和用戶友好度,所以說,該程序值得開發(fā)者廣泛應用。

        參考文獻

        [1]宋坤,劉銳寧,李偉明.MFC程序開發(fā)參考大全[M].北京:人民郵電出版社,2007.

        ————————

        作者簡介:何源(1990—),男,現(xiàn)就讀于山西農(nóng)業(yè)大學,主要從事資源環(huán)境遙感方面的研究。

        〔編輯:白潔〕endprint

        猜你喜歡
        應用程序
        刪除Win10中自帶的應用程序
        電腦報(2019年12期)2019-09-10 05:08:20
        谷歌禁止加密貨幣應用程序
        Windows環(huán)境下基于棧和堆的應用程序行為解析方法研究
        警察技術(2015年1期)2015-02-27 15:35:42
        用好被忽視的Office應用程序
        電腦迷(2014年12期)2014-04-29 00:44:03
        保護移動設備的安全
        關閉應用程序更新提醒
        電腦迷(2012年15期)2012-04-29 17:09:47
        為軟件付費你準備好了嗎?
        三星電子將開設應用程序下載商店
        微軟軟件商店開始接受應用程序
        啟動后提示MOM.EXE錯誤
        狠狠躁夜夜躁AV网站中文字幕| 国产亚州精品女人久久久久久| 777米奇色8888狠狠俺去啦| 天堂sv在线最新版在线| 在线看亚洲十八禁网站| av国产自拍在线观看| 99久久无色码中文字幕人妻蜜柚 | av少妇偷窃癖在线观看| 我的极品小姨在线观看| 国产在线无码一区二区三区视频 | 91精品国产综合久久久密臀九色| 男女高潮免费观看无遮挡 | 日本av一区二区在线| 奶头又大又白喷奶水av| 亚洲人成人77777网站| 涩涩国产在线不卡无码 | 日产乱码一二三区别免费l| 中文字幕av无码免费一区| 久久中文字幕日韩精品| 青草草视频在线观看华人免费| 日本国产成人国产在线播放| 一本大道东京热无码| 级毛片无码av| 好看的日韩精品视频在线| 精品无码国产一区二区三区av| 亚洲男人精品| 娇妻玩4p被三个男人伺候电影| 美女裸体无遮挡免费视频国产| 久久91精品国产一区二区| 亚洲国产精品无码中文字| 男人无码视频在线观看| 国产人成在线免费视频| 青青草大香蕉视频在线观看| 无码人妻久久一区二区三区不卡| 啪啪视频一区二区三区入囗| 免费在线不卡黄色大片| 久久综合狠狠综合久久综合88| 日韩a∨精品日韩在线观看| 亚洲一区二区三区成人在线| 在线观看一级黄片天堂| 国产又黄又大又粗的视频|