版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于MFC的圖片瀏覽器的設計與實現(xiàn),概述,1、選題的目的和意義 2、本文所做的主要工作3、軟件開發(fā)平臺及編程模式 4、圖像格式分析 5、軟件設計與實現(xiàn) 6、本設計關鍵技術及難點 7、軟件測試與改進思想,選題的目的和意義,圖像是現(xiàn)代信息社會中最基本的信息,它使信息變得栩栩如生,更加符合人們的日常交流習慣,因此它成為人類獲取和交換信息的主要來源。如今數(shù)字圖像處理的應用日益廣泛,逐步成為信息科學、工程學、醫(yī)學等許多學科的重要基礎,
2、同時作為一種實用技術廣泛應用于軍事、氣象、交通、探礦、水利、農業(yè)甚至娛樂等領域。尤其是價格低廉的高性能計算機和諸如數(shù)碼相機及掃描儀這樣的圖像采集設備出現(xiàn)后,數(shù)字圖像處理技術被大量的應用到影視、游戲等公眾及娛樂領域,與人類的生活密切相關。處理信息量巨大,要求處理速度極高,實時產生高質量的圖形圖像是我們不斷的追求目標。因此本選題具有較好好的實用價值和意義。,本文所做的主要工作,1、詳細分析了當今流行的各種圖像格式的編碼與解碼方法。2、
3、利用Microsoft Visual C++ 6.0作為開發(fā)工具,使用MFC Application Framework作為軟件的基本架構,設計并開發(fā)了一個圖片瀏覽器。3、實現(xiàn)了對BMP、PCX、TGA、JPEG、GIF圖像格式的圖片進行讀、寫、顯示等基本功能。4、利用圖像處理中一些變換算法,實現(xiàn)了圖像的放大、縮小、旋轉及百葉窗、馬賽克等顯示特效。5、實現(xiàn)了各種圖片格式的轉換功能。6、對所開發(fā)的軟件進行了測試并提出了改進
4、意見。,軟件開發(fā)平臺及編程模式,本軟件采用C++來進行圖像編程的主要原因是:1、C++代碼被編譯成匯編語言,可以直接在處理器上運行,效率很高。 2、C++直接控制內存的分配和釋放,這雖繁瑣,加大了編程的負擔,但卻能有效地控制內存的使用。3、使用C++進行圖像處理編程具有更大的靈活性。 而在以C++為核心語言的可視化編程工具中,Microsoft Visual C++ 6.0以其自身許多優(yōu)異的特性而獲得了最為廣泛的應用
5、。鑒于以上原因,本設計使用Microsoft Visual C++ 6.0作為軟件的開發(fā)平臺。,圖像格式分析,用數(shù)字來表示圖像有不同的格式。因此一個通用的圖像處理軟件應該能支持多種不同的圖像格式。本設計所實現(xiàn)的圖片瀏覽軟件支持以下幾種在圖像處理領域及實際應用中使用的圖像格式:BMP、PCX、TGA、JPEG、GIF。由于圖像質量的提高是建立在圖像數(shù)據(jù)的增大的基礎上的,而圖像數(shù)據(jù)量的增大將不可避免地減低圖像處理的速度,并且給存儲和傳遞帶
6、來困難。因此,如何有效地控制數(shù)字圖像的存儲量已成為數(shù)字圖像處理的一項重要課題。數(shù)據(jù)壓縮技術是控制數(shù)據(jù)量的基本技術。各種圖像格式都可以采用一種,甚至多種不同的數(shù)據(jù)壓縮算法來壓縮數(shù)據(jù)量,因此圖像格式和壓縮算法是密切相關的。而開發(fā)圖像處理軟件也應首先了解圖像的編碼及解碼方法。,BMP圖像,BMP圖像即我們通常所說的“位圖”,是Windows系統(tǒng)中最為常見的圖像格式。經常存儲為我們常見的BMP為后綴的位圖文件。BMP位圖文件包括4部分:1、位
7、圖文件頭結構 BITMAPFILEHEADER2、位圖信息頭結構 BITMAPINFOHEADER3、位圖顏色表 RGBQUAD4、位圖像素數(shù)據(jù),PCX圖像,PCX是Zsoft公司研制的一種常用圖像格式,也是在PC機上使用時間最久的一種位圖格式。PCX的最新版本支持24位色彩(256色的調色板或全24位RGB),圖像的大小可達64k×64k個像素。PCX采用游程長度編碼來
8、壓縮數(shù)據(jù),但是有些情況下壓縮效率不高,尤其是對于掃描圖像或視頻圖像。,TGA圖像,TGA包含了多種變體,TGA文件的第三字節(jié)用來區(qū)別不是的TGA文件。該字節(jié)的值(二進制整數(shù))及對應的文件類型如下:0—文件中沒有圖像數(shù)據(jù)1—未壓縮的,顏色表圖像2—未壓縮的,RGB圖像3—未壓縮的,黑白圖像9—游程長度(Runlength)編碼的顏色表圖像10—游程長度(Runlength)編碼的RGB圖像11—壓
9、縮的,黑白圖像32—使用Huffman,Delta和Runlength編碼的顏色表圖像33—使用Huffman,Delta和Runlength編碼的顏色映射圖像, 四叉樹類型處理,JPEG圖像,JPEG的全稱是Joint Photographic Experts Group,是由專家組制訂的用于連續(xù)色調(包括灰度和彩色)靜止圖像的壓縮編碼標準。JPEG標準的壓縮編碼算法是“多灰度靜止
10、圖像的數(shù)字壓縮編碼”。JPEG標準包括3部分,即編碼器、譯碼器和交換格式。編碼器將原始圖像的編碼壓縮成壓縮數(shù)據(jù),譯碼器將壓縮的圖像數(shù)據(jù)還原成原始圖像數(shù)據(jù)。圖像壓縮數(shù)據(jù)以一定的交換格式存儲,格式中包括編碼過程中采用的碼表等。,GIF圖像,GIF全稱為Graphics Interchange Format,文件由CompuServe公司開發(fā)并持有該圖形文件格式的版權。GIF圖像是基于顏色表存儲的,即圖像中每一點的存儲數(shù)據(jù)是該點的顏色對應于
11、顏色列表(即調色板)的索引值。GIF圖像最多只支持8位存儲位,即最多支持256色圖像。GIF文件內部分成許多存儲塊,用來存儲多幅圖像或者是決定圖像表現(xiàn)行為的控制塊,可用于實現(xiàn)動畫和交互式應用。GIF文件使用LZW壓縮算法壓縮圖像。,軟件設計與實現(xiàn),需求分析 總體設計 軟件界面設計 詳細設計與實現(xiàn),需求分析,功能需求 :1、可以打開BMP、PCX、TGA、JPEG及GIF圖像。2、打開的圖像,用戶均能另存為任意一種格式,以實現(xiàn)
12、圖像格式的轉換。3、實現(xiàn)圖片的放大、縮小,還原。4、可以對圖像進行90度、180度旋轉。5、可以直接調用Windows畫圖程序打開圖片并進行編輯。6、軟件提供“上一張”、“下一張”功能。7、可以進行全屏幕瀏覽,并提供“幻燈片播放”的功能,自動顯示當前文件夾下的所有圖像。,,需求分析,8、按F11鍵可以切換全屏、非全屏瀏覽,同時,在進行全屏幕瀏覽時按ESC鍵也可以退出全屏狀態(tài)。9、在載入圖片時,提供各種顯示效果,用戶也可以選擇
13、讓系統(tǒng)隨機選擇效果。10、在查看圖片時,用戶也可以隨時顯示“水平百葉窗”、“垂直百葉窗”、“馬賽克”、“向上掃描”、“向下掃描”效果。11、在查看圖片時,可以選擇從當前目錄刪除該圖片,并將其放入系統(tǒng)回收站中。12、在窗口的用戶區(qū)右鍵單擊鼠標,則彈出快捷菜單,顯示常用操作命令。,,需求分析,性能需求1、硬件平臺要求: 由于本軟件為單機軟件,不需進行大量的數(shù)據(jù)讀寫和數(shù)據(jù)交換,故對系統(tǒng)硬件配置的要求并不高,只要能夠平穩(wěn)運行W
14、indows操作系統(tǒng)的硬件平臺,都能夠使用本軟件。2、軟件環(huán)境要求: 本軟件運行平臺為Microsoft Windows 98/Me/NT/2000/XP/2003。,,總體設計,以MVC(Model-View-Controller)應用程序結構劃分的模塊如圖所示。,,Picture Viewer,Model,View,Controller,圖像解碼、編碼模塊,圖像顯示模塊,圖像變換模塊,PCX模塊,TGA模塊,BMP模塊
15、,JPEG模塊,GIF模塊,OnDraw (),狀態(tài)欄信息顯示,圖像縮放模塊,圖像旋轉模塊,全屏瀏覽模塊,顯示特效模塊,,軟件界面設計,根據(jù)軟件的需求分析及圖片瀏覽軟件的特點,本設計中軟件采用單文檔界面(SDI),包括標準菜單、工具欄和狀態(tài)欄。工具欄上為常用菜單命令按鈕,如“打開”、“保存”、“上一張”、“下一張”、“放大”、“縮小”、“旋轉”等。另外,在全屏顯示時提供浮動工具欄,并且在用戶區(qū)右擊鼠標可以彈出快捷菜單。,,軟件界面設計,
16、軟件的整體界面,,軟件菜單及工具欄,軟件在全屏狀態(tài)下的浮動工具條及右鍵菜單,詳細設計與實現(xiàn),軟件核心數(shù)據(jù)結構LanImage類設計 分別設計了BMP、 PCX、 TGA、 JPEG、GIF解碼、編碼模塊 圖像顯示模塊 全屏瀏覽模塊 圖像縮放模塊 圖像旋轉模塊 圖像特效顯示,,詳細設計與實現(xiàn),軟件核心數(shù)據(jù)結構LanImage類設計,,圖像顯示模塊,全屏瀏覽模塊,圖像縮放模塊,圖像旋轉模塊 圖像特效顯示,詳細設計與實現(xiàn)
17、,前面已分析過BMP 、 PCX、 TGA、 JPEG、GIF圖像的存儲格式,在本設計中,針對不同的格式設計了不同的解碼與編碼函數(shù)。格式名解碼函數(shù)編碼函數(shù)BMPReadBmp() SaveBmp() PCXReadPcx() SavePcx() TGAReadTga() SaveTga() 由于JPEG和GIF的編碼較為復雜,并且時間有限,故在本設計的實現(xiàn)過程中,JPEG和GIF的解碼、編碼
18、模塊調用了第三方的讀寫庫。,,關鍵技術及難點,資源的分配和釋放 使用JPEG和GIF讀寫庫時緩沖區(qū)格式的轉換 實現(xiàn)旋轉時對內存的位操作 直接對內存中圖像數(shù)據(jù)進行操作實現(xiàn)的特效 右鍵菜單的實現(xiàn) 瀏覽功能的實現(xiàn),,關鍵技術及難點,資源的分配和釋放 由于C++中內存資源的分配和釋放均由程序員控制,而本程序多處用到了在內存中開辟緩沖區(qū),因此在本設計的實現(xiàn)過程中,對內存的管理便尤為重要。 例如在打開一張新圖片時,就
19、要對上一張圖片的緩沖區(qū)進行釋放,否則會造成內存泄漏。但是由于JPEG和GIF調用了第三方的讀寫庫,其使用的內存緩沖區(qū)格式與LanImage類中使用的不同,因此,在進行緩沖區(qū)的釋放時,首先要判斷上一張圖片是何種格式,即是否使用了第三方的讀寫庫,如果使用了,則應采取不同的資源釋放方式。本文是在LanImage類中加入BOOL型變量m_bReadWithLibSupport來判斷是否使用了JPEG和GIF讀寫庫的。,,關鍵技術及難點,使用J
20、PEG和GIF讀寫庫時緩沖區(qū)格式的轉換 在使用JPEG和GIF讀寫庫時,其解碼后的數(shù)據(jù)緩沖區(qū)格式是不同的,而圖像的顯示都是通過LanImage::Draw()函數(shù)實現(xiàn)的。Draw()函數(shù)只能讀取LanImage類中m_pImage指向的緩沖區(qū)。因此,在圖像打開時需要進行緩沖區(qū)的轉換。另外,如果打開的是BMP、TGA、PCX格式的圖像,而用戶選擇保存為JPEG或GIF圖像,那么又要將m_pImage指向的
21、緩沖區(qū)轉換為JPEG和GIF讀寫庫所使用的緩沖區(qū)。,,關鍵技術及難點,實現(xiàn)旋轉時對內存的位操作 在對單色和4位色圖像進行旋轉時,需要進行位操作。以單色位圖為例,一個字節(jié)包含8個像素,那么在旋轉90度時,一個字節(jié)中的不同位,會變換到不同的掃描行,也就是說要將字節(jié)中的位一一取出,計算其位置,并重新放到新字節(jié)的合適的位中。,,關鍵技術及難點,直接對內存中圖像數(shù)據(jù)進行操作實現(xiàn)的特效 本文在實現(xiàn)特效時采用了兩種
22、完全不同方法。 一種是利用改變Draw()函數(shù)參數(shù)實現(xiàn)的特效。 另一種即是先在內存中對圖像數(shù)據(jù)變換生成特效過程中的每一幀圖像,然后調用Draw()函數(shù)直接將其顯示出來。 以馬賽克效果為例,如果使用Draw()函數(shù)實現(xiàn),由隨機函數(shù)確定顯示哪一塊后,則直接將該塊顯示出來。而使用內存特效,在消隱的過程中,在此時應該將原始圖像數(shù)據(jù)中的該塊對應的數(shù)據(jù)置為白色,而以前已置為白色的數(shù)據(jù)塊仍保持白色不變;在恢復
23、過程中則正相反,是由原始圖像數(shù)據(jù)代替白色數(shù)據(jù)。,,關鍵技術及難點,右鍵菜單的實現(xiàn) 利用MFC函數(shù)TrackPopupMenu()實現(xiàn)右鍵菜單。但是,右鍵菜單的實現(xiàn)關鍵是如何更新UI界面的問題。例如,對于“縮小”命令,當連續(xù)進行縮小,顯示比例減為負值時,應該禁用“縮小”命令,此時,右鍵菜單中該命令項應該變?yōu)榛疑?。對于普通菜單和工具欄,可以接收UPDATE_COMMAND_UI消息,并在該消息的處理函數(shù)中改變命令項的狀態(tài)。而右
24、鍵菜單是無法接收該消息的,故必須使用其他的方法。本文采用CMenu類中的EnableMenuItem()函數(shù)來實現(xiàn)。,,關鍵技術及難點,瀏覽功能的實現(xiàn) 在打開一幅圖片后,可以使用“上一張”、“下一張”命令或按“Page Up”、“Page Down”鍵瀏覽當前目錄中可支持的圖像。 實現(xiàn)該功能應注意的問題是,在打開一幅圖片并讀取當前目錄中可支圖像列表后,如果用戶對該目錄中的圖片進行了刪除或向該目錄中加入
25、了新的圖片,那么在使用“上一張”、“下一張”命令時,應該重新讀取文件表。,,軟件測試與改進思想,1、5種圖像格式的解碼和顯示是否正常。 2、特效是否適合所有大小和顏色深度的圖像,圖像邊界處是否正確處理。 3、幾種格式的互相轉換,尤其是BMP、TGA、PCX和JPEG或GIF之間的轉換。 4、內存分配和釋放是否正確,有無內存泄漏。,軟件測試與改進思想,本文以實現(xiàn)了需求分析中要求的全部功能,并且按照預期的目標生成了
26、一個完整實用的圖像瀏覽軟件。但是由于時間有限,本軟件的不足也在所難免,主要有以下幾方面需要改進:(1)GIF圖像不支持動畫。(2)在保存為PCX圖像時只能以8位即256色深度保存。(3)瀏覽當前目錄中所有圖像的功能目前使用靜態(tài)數(shù)組保存文件名,這樣如果當前目錄中支持的圖像文件數(shù)超過了數(shù)組上限,那么多出的圖片將不能使用“上一張”、“下一張”的功能來瀏覽。,,感謝各位老師!感謝源碼愛好者提供源程序交流下載:網(wǎng)址(http://www
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于jsp和hibernate電子商務網(wǎng)站設計與實現(xiàn)開題報告
- 基于jsp的電子商務網(wǎng)站設計與實現(xiàn)
- (開題報告)基于jsp的電子商務網(wǎng)站設計與實現(xiàn)
- 電子商務網(wǎng)站設計與實現(xiàn)
- 電子商務網(wǎng)站的設計與實現(xiàn)
- 書店電子商務網(wǎng)站的設計與實現(xiàn)
- 電子商務網(wǎng)站的設計與實現(xiàn).pdf
- 電子商務課程設計報告---電子商務網(wǎng)站的設計與實現(xiàn)
- 基于ASP技術電子商務網(wǎng)站設計與實現(xiàn).pdf
- 電子商務網(wǎng)站設計與分析
- 基于.net電子商務網(wǎng)站的研究與實現(xiàn)
- 基于jsp的電子商務購物網(wǎng)站設計與實現(xiàn)
- 動態(tài)電子商務網(wǎng)站的設計與實現(xiàn).pdf
- 05 電子商務網(wǎng)站的實現(xiàn)
- 安全電子商務網(wǎng)站的設計與實現(xiàn).pdf
- 外文翻譯---電子商務網(wǎng)站的設計與實現(xiàn)
- 圖書電子商務網(wǎng)站的設計與實現(xiàn).pdf
- 電子商務網(wǎng)站設計與實現(xiàn)——畢業(yè)論文
- 基于.net平臺的電子商務網(wǎng)站設計與實現(xiàn)-論文
- 電子商務網(wǎng)站的設計與實現(xiàn)畢業(yè)設計
評論
0/150
提交評論