基于jsp、hibernate電子商務(wù)網(wǎng)站設(shè)計與實現(xiàn)_第1頁
已閱讀1頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于MFC的圖片瀏覽器的設(shè)計與實現(xiàn),概述,1、選題的目的和意義 2、本文所做的主要工作3、軟件開發(fā)平臺及編程模式 4、圖像格式分析 5、軟件設(shè)計與實現(xiàn) 6、本設(shè)計關(guān)鍵技術(shù)及難點 7、軟件測試與改進思想,選題的目的和意義,圖像是現(xiàn)代信息社會中最基本的信息,它使信息變得栩栩如生,更加符合人們的日常交流習(xí)慣,因此它成為人類獲取和交換信息的主要來源。如今數(shù)字圖像處理的應(yīng)用日益廣泛,逐步成為信息科學(xué)、工程學(xué)、醫(yī)學(xué)等許多學(xué)科的重要基礎(chǔ),

2、同時作為一種實用技術(shù)廣泛應(yīng)用于軍事、氣象、交通、探礦、水利、農(nóng)業(yè)甚至娛樂等領(lǐng)域。尤其是價格低廉的高性能計算機和諸如數(shù)碼相機及掃描儀這樣的圖像采集設(shè)備出現(xiàn)后,數(shù)字圖像處理技術(shù)被大量的應(yīng)用到影視、游戲等公眾及娛樂領(lǐng)域,與人類的生活密切相關(guān)。處理信息量巨大,要求處理速度極高,實時產(chǎn)生高質(zhì)量的圖形圖像是我們不斷的追求目標(biāo)。因此本選題具有較好好的實用價值和意義。,本文所做的主要工作,1、詳細分析了當(dāng)今流行的各種圖像格式的編碼與解碼方法。2、

3、利用Microsoft Visual C++ 6.0作為開發(fā)工具,使用MFC Application Framework作為軟件的基本架構(gòu),設(shè)計并開發(fā)了一個圖片瀏覽器。3、實現(xiàn)了對BMP、PCX、TGA、JPEG、GIF圖像格式的圖片進行讀、寫、顯示等基本功能。4、利用圖像處理中一些變換算法,實現(xiàn)了圖像的放大、縮小、旋轉(zhuǎn)及百葉窗、馬賽克等顯示特效。5、實現(xiàn)了各種圖片格式的轉(zhuǎn)換功能。6、對所開發(fā)的軟件進行了測試并提出了改進

4、意見。,軟件開發(fā)平臺及編程模式,本軟件采用C++來進行圖像編程的主要原因是:1、C++代碼被編譯成匯編語言,可以直接在處理器上運行,效率很高。 2、C++直接控制內(nèi)存的分配和釋放,這雖繁瑣,加大了編程的負擔(dān),但卻能有效地控制內(nèi)存的使用。3、使用C++進行圖像處理編程具有更大的靈活性。 而在以C++為核心語言的可視化編程工具中,Microsoft Visual C++ 6.0以其自身許多優(yōu)異的特性而獲得了最為廣泛的應(yīng)用

5、。鑒于以上原因,本設(shè)計使用Microsoft Visual C++ 6.0作為軟件的開發(fā)平臺。,圖像格式分析,用數(shù)字來表示圖像有不同的格式。因此一個通用的圖像處理軟件應(yīng)該能支持多種不同的圖像格式。本設(shè)計所實現(xiàn)的圖片瀏覽軟件支持以下幾種在圖像處理領(lǐng)域及實際應(yīng)用中使用的圖像格式:BMP、PCX、TGA、JPEG、GIF。由于圖像質(zhì)量的提高是建立在圖像數(shù)據(jù)的增大的基礎(chǔ)上的,而圖像數(shù)據(jù)量的增大將不可避免地減低圖像處理的速度,并且給存儲和傳遞帶

6、來困難。因此,如何有效地控制數(shù)字圖像的存儲量已成為數(shù)字圖像處理的一項重要課題。數(shù)據(jù)壓縮技術(shù)是控制數(shù)據(jù)量的基本技術(shù)。各種圖像格式都可以采用一種,甚至多種不同的數(shù)據(jù)壓縮算法來壓縮數(shù)據(jù)量,因此圖像格式和壓縮算法是密切相關(guān)的。而開發(fā)圖像處理軟件也應(yīng)首先了解圖像的編碼及解碼方法。,BMP圖像,BMP圖像即我們通常所說的“位圖”,是Windows系統(tǒng)中最為常見的圖像格式。經(jīng)常存儲為我們常見的BMP為后綴的位圖文件。BMP位圖文件包括4部分:1、位

7、圖文件頭結(jié)構(gòu) BITMAPFILEHEADER2、位圖信息頭結(jié)構(gòu) BITMAPINFOHEADER3、位圖顏色表 RGBQUAD4、位圖像素數(shù)據(jù),PCX圖像,PCX是Zsoft公司研制的一種常用圖像格式,也是在PC機上使用時間最久的一種位圖格式。PCX的最新版本支持24位色彩(256色的調(diào)色板或全24位RGB),圖像的大小可達64k×64k個像素。PCX采用游程長度編碼來

8、壓縮數(shù)據(jù),但是有些情況下壓縮效率不高,尤其是對于掃描圖像或視頻圖像。,TGA圖像,TGA包含了多種變體,TGA文件的第三字節(jié)用來區(qū)別不是的TGA文件。該字節(jié)的值(二進制整數(shù))及對應(yīng)的文件類型如下: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ù)色調(diào)(包括灰度和彩色)靜止圖像的壓縮編碼標(biāo)準(zhǔn)。JPEG標(biāo)準(zhǔn)的壓縮編碼算法是“多灰度靜止

10、圖像的數(shù)字壓縮編碼”。JPEG標(biāo)準(zhǔn)包括3部分,即編碼器、譯碼器和交換格式。編碼器將原始圖像的編碼壓縮成壓縮數(shù)據(jù),譯碼器將壓縮的圖像數(shù)據(jù)還原成原始圖像數(shù)據(jù)。圖像壓縮數(shù)據(jù)以一定的交換格式存儲,格式中包括編碼過程中采用的碼表等。,GIF圖像,GIF全稱為Graphics Interchange Format,文件由CompuServe公司開發(fā)并持有該圖形文件格式的版權(quán)。GIF圖像是基于顏色表存儲的,即圖像中每一點的存儲數(shù)據(jù)是該點的顏色對應(yīng)于

11、顏色列表(即調(diào)色板)的索引值。GIF圖像最多只支持8位存儲位,即最多支持256色圖像。GIF文件內(nèi)部分成許多存儲塊,用來存儲多幅圖像或者是決定圖像表現(xiàn)行為的控制塊,可用于實現(xiàn)動畫和交互式應(yīng)用。GIF文件使用LZW壓縮算法壓縮圖像。,軟件設(shè)計與實現(xiàn),需求分析 總體設(shè)計 軟件界面設(shè)計 詳細設(shè)計與實現(xiàn),需求分析,功能需求 :1、可以打開BMP、PCX、TGA、JPEG及GIF圖像。2、打開的圖像,用戶均能另存為任意一種格式,以實現(xiàn)

12、圖像格式的轉(zhuǎn)換。3、實現(xiàn)圖片的放大、縮小,還原。4、可以對圖像進行90度、180度旋轉(zhuǎn)。5、可以直接調(diào)用Windows畫圖程序打開圖片并進行編輯。6、軟件提供“上一張”、“下一張”功能。7、可以進行全屏幕瀏覽,并提供“幻燈片播放”的功能,自動顯示當(dāng)前文件夾下的所有圖像。,,需求分析,8、按F11鍵可以切換全屏、非全屏瀏覽,同時,在進行全屏幕瀏覽時按ESC鍵也可以退出全屏狀態(tài)。9、在載入圖片時,提供各種顯示效果,用戶也可以選擇

13、讓系統(tǒng)隨機選擇效果。10、在查看圖片時,用戶也可以隨時顯示“水平百葉窗”、“垂直百葉窗”、“馬賽克”、“向上掃描”、“向下掃描”效果。11、在查看圖片時,可以選擇從當(dāng)前目錄刪除該圖片,并將其放入系統(tǒng)回收站中。12、在窗口的用戶區(qū)右鍵單擊鼠標(biāo),則彈出快捷菜單,顯示常用操作命令。,,需求分析,性能需求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。,,總體設(shè)計,以MVC(Model-View-Controller)應(yīng)用程序結(jié)構(gòu)劃分的模塊如圖所示。,,Picture Viewer,Model,View,Controller,圖像解碼、編碼模塊,圖像顯示模塊,圖像變換模塊,PCX模塊,TGA模塊,BMP模塊

15、,JPEG模塊,GIF模塊,OnDraw (),狀態(tài)欄信息顯示,圖像縮放模塊,圖像旋轉(zhuǎn)模塊,全屏瀏覽模塊,顯示特效模塊,,軟件界面設(shè)計,根據(jù)軟件的需求分析及圖片瀏覽軟件的特點,本設(shè)計中軟件采用單文檔界面(SDI),包括標(biāo)準(zhǔn)菜單、工具欄和狀態(tài)欄。工具欄上為常用菜單命令按鈕,如“打開”、“保存”、“上一張”、“下一張”、“放大”、“縮小”、“旋轉(zhuǎn)”等。另外,在全屏顯示時提供浮動工具欄,并且在用戶區(qū)右擊鼠標(biāo)可以彈出快捷菜單。,,軟件界面設(shè)計,

16、軟件的整體界面,,軟件菜單及工具欄,軟件在全屏狀態(tài)下的浮動工具條及右鍵菜單,詳細設(shè)計與實現(xiàn),軟件核心數(shù)據(jù)結(jié)構(gòu)LanImage類設(shè)計 分別設(shè)計了BMP、 PCX、 TGA、 JPEG、GIF解碼、編碼模塊 圖像顯示模塊 全屏瀏覽模塊 圖像縮放模塊 圖像旋轉(zhuǎn)模塊 圖像特效顯示,,詳細設(shè)計與實現(xiàn),軟件核心數(shù)據(jù)結(jié)構(gòu)LanImage類設(shè)計,,圖像顯示模塊,全屏瀏覽模塊,圖像縮放模塊,圖像旋轉(zhuǎn)模塊 圖像特效顯示,詳細設(shè)計與實現(xiàn)

17、,前面已分析過BMP 、 PCX、 TGA、 JPEG、GIF圖像的存儲格式,在本設(shè)計中,針對不同的格式設(shè)計了不同的解碼與編碼函數(shù)。格式名解碼函數(shù)編碼函數(shù)BMPReadBmp() SaveBmp() PCXReadPcx() SavePcx() TGAReadTga() SaveTga() 由于JPEG和GIF的編碼較為復(fù)雜,并且時間有限,故在本設(shè)計的實現(xiàn)過程中,JPEG和GIF的解碼、編碼

18、模塊調(diào)用了第三方的讀寫庫。,,關(guān)鍵技術(shù)及難點,資源的分配和釋放 使用JPEG和GIF讀寫庫時緩沖區(qū)格式的轉(zhuǎn)換 實現(xiàn)旋轉(zhuǎn)時對內(nèi)存的位操作 直接對內(nèi)存中圖像數(shù)據(jù)進行操作實現(xiàn)的特效 右鍵菜單的實現(xiàn) 瀏覽功能的實現(xiàn),,關(guān)鍵技術(shù)及難點,資源的分配和釋放 由于C++中內(nèi)存資源的分配和釋放均由程序員控制,而本程序多處用到了在內(nèi)存中開辟緩沖區(qū),因此在本設(shè)計的實現(xiàn)過程中,對內(nèi)存的管理便尤為重要。 例如在打開一張新圖片時,就

19、要對上一張圖片的緩沖區(qū)進行釋放,否則會造成內(nèi)存泄漏。但是由于JPEG和GIF調(diào)用了第三方的讀寫庫,其使用的內(nèi)存緩沖區(qū)格式與LanImage類中使用的不同,因此,在進行緩沖區(qū)的釋放時,首先要判斷上一張圖片是何種格式,即是否使用了第三方的讀寫庫,如果使用了,則應(yīng)采取不同的資源釋放方式。本文是在LanImage類中加入BOOL型變量m_bReadWithLibSupport來判斷是否使用了JPEG和GIF讀寫庫的。,,關(guān)鍵技術(shù)及難點,使用J

20、PEG和GIF讀寫庫時緩沖區(qū)格式的轉(zhuǎn)換 在使用JPEG和GIF讀寫庫時,其解碼后的數(shù)據(jù)緩沖區(qū)格式是不同的,而圖像的顯示都是通過LanImage::Draw()函數(shù)實現(xiàn)的。Draw()函數(shù)只能讀取LanImage類中m_pImage指向的緩沖區(qū)。因此,在圖像打開時需要進行緩沖區(qū)的轉(zhuǎn)換。另外,如果打開的是BMP、TGA、PCX格式的圖像,而用戶選擇保存為JPEG或GIF圖像,那么又要將m_pImage指向的

21、緩沖區(qū)轉(zhuǎn)換為JPEG和GIF讀寫庫所使用的緩沖區(qū)。,,關(guān)鍵技術(shù)及難點,實現(xiàn)旋轉(zhuǎn)時對內(nèi)存的位操作 在對單色和4位色圖像進行旋轉(zhuǎn)時,需要進行位操作。以單色位圖為例,一個字節(jié)包含8個像素,那么在旋轉(zhuǎn)90度時,一個字節(jié)中的不同位,會變換到不同的掃描行,也就是說要將字節(jié)中的位一一取出,計算其位置,并重新放到新字節(jié)的合適的位中。,,關(guān)鍵技術(shù)及難點,直接對內(nèi)存中圖像數(shù)據(jù)進行操作實現(xiàn)的特效 本文在實現(xiàn)特效時采用了兩種

22、完全不同方法。 一種是利用改變Draw()函數(shù)參數(shù)實現(xiàn)的特效。 另一種即是先在內(nèi)存中對圖像數(shù)據(jù)變換生成特效過程中的每一幀圖像,然后調(diào)用Draw()函數(shù)直接將其顯示出來。 以馬賽克效果為例,如果使用Draw()函數(shù)實現(xiàn),由隨機函數(shù)確定顯示哪一塊后,則直接將該塊顯示出來。而使用內(nèi)存特效,在消隱的過程中,在此時應(yīng)該將原始圖像數(shù)據(jù)中的該塊對應(yīng)的數(shù)據(jù)置為白色,而以前已置為白色的數(shù)據(jù)塊仍保持白色不變;在恢復(fù)

23、過程中則正相反,是由原始圖像數(shù)據(jù)代替白色數(shù)據(jù)。,,關(guān)鍵技術(shù)及難點,右鍵菜單的實現(xiàn) 利用MFC函數(shù)TrackPopupMenu()實現(xiàn)右鍵菜單。但是,右鍵菜單的實現(xiàn)關(guān)鍵是如何更新UI界面的問題。例如,對于“縮小”命令,當(dāng)連續(xù)進行縮小,顯示比例減為負值時,應(yīng)該禁用“縮小”命令,此時,右鍵菜單中該命令項應(yīng)該變?yōu)榛疑τ谄胀ú藛魏凸ぞ邫?,可以接收UPDATE_COMMAND_UI消息,并在該消息的處理函數(shù)中改變命令項的狀態(tài)。而右

24、鍵菜單是無法接收該消息的,故必須使用其他的方法。本文采用CMenu類中的EnableMenuItem()函數(shù)來實現(xiàn)。,,關(guān)鍵技術(shù)及難點,瀏覽功能的實現(xiàn) 在打開一幅圖片后,可以使用“上一張”、“下一張”命令或按“Page Up”、“Page Down”鍵瀏覽當(dāng)前目錄中可支持的圖像。 實現(xiàn)該功能應(yīng)注意的問題是,在打開一幅圖片并讀取當(dāng)前目錄中可支圖像列表后,如果用戶對該目錄中的圖片進行了刪除或向該目錄中加入

25、了新的圖片,那么在使用“上一張”、“下一張”命令時,應(yīng)該重新讀取文件表。,,軟件測試與改進思想,1、5種圖像格式的解碼和顯示是否正常。 2、特效是否適合所有大小和顏色深度的圖像,圖像邊界處是否正確處理。 3、幾種格式的互相轉(zhuǎn)換,尤其是BMP、TGA、PCX和JPEG或GIF之間的轉(zhuǎn)換。 4、內(nèi)存分配和釋放是否正確,有無內(nèi)存泄漏。,軟件測試與改進思想,本文以實現(xiàn)了需求分析中要求的全部功能,并且按照預(yù)期的目標(biāo)生成了

26、一個完整實用的圖像瀏覽軟件。但是由于時間有限,本軟件的不足也在所難免,主要有以下幾方面需要改進:(1)GIF圖像不支持動畫。(2)在保存為PCX圖像時只能以8位即256色深度保存。(3)瀏覽當(dāng)前目錄中所有圖像的功能目前使用靜態(tài)數(shù)組保存文件名,這樣如果當(dāng)前目錄中支持的圖像文件數(shù)超過了數(shù)組上限,那么多出的圖片將不能使用“上一張”、“下一張”的功能來瀏覽。,,感謝各位老師!感謝源碼愛好者提供源程序交流下載:網(wǎng)址(http://www

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論