圖片管理器報(bào)告_第1頁
圖片管理器報(bào)告_第2頁
圖片管理器報(bào)告_第3頁
圖片管理器報(bào)告_第4頁
圖片管理器報(bào)告_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Java面向?qū)ο蟪绦蛟O(shè)計(jì)學(xué)期作業(yè)項(xiàng)目報(bào)告題 目 圖片管理器組 長 崔利歡組 員 趙志軍 諶超塵 陳慧 施鳳婷系 別 軟件工程學(xué) 院 軟件學(xué)院指導(dǎo)教師 付 偉 講師2016年6月11日目 錄一、 項(xiàng)目基本功能陳述3二、 項(xiàng)目進(jìn)度及工作安排51、工作安排52、項(xiàng)目進(jìn)度6三、 項(xiàng)目相關(guān)技術(shù)71、圖片在面板中居中算法72、瀏覽圖片時(shí)放大與縮小的算法83、圖片的上下張的算法94、播放工具欄可以隱藏算法95、鍵盤與鼠標(biāo)交替使用算法96、圖片編輯算法107、編輯圖片時(shí)圖片的縮放算法10四、 項(xiàng)目設(shè)計(jì)121、圖片瀏覽功能122、圖片編輯功能12五、 項(xiàng)目實(shí)現(xiàn)131、圖片查看器首頁132、圖片查看功能頁面143

2、、圖片編輯功能頁面17六、 總結(jié)與展望201、 項(xiàng)目基本功能陳述本項(xiàng)目是一款關(guān)于圖片管理器的應(yīng)用軟件,如圖1.1所示,功能包括圖片查看與圖片編輯兩大主要功能。如圖1.2所示,圖片查看包括以幻燈片形式播放,圖片刪除,圖片上一張,圖片下一張,圖片放大,圖片縮小等功能,如圖1.3所示,圖片編輯包括對(duì)圖片的格式轉(zhuǎn)化,圖片銳化,圖片馬賽克,圖片半透明效果,圖片模糊效果,圖片照亮,裁剪圖片等功能。圖1.1圖1.2圖1.32、 項(xiàng)目進(jìn)度及工作安排1、工作安排如表2.1.1所示,對(duì)全體小組人員進(jìn)行項(xiàng)目安排。姓名項(xiàng)目安排全體小組人員收集資料,列出項(xiàng)目需求崔利歡完成項(xiàng)目框架、編寫項(xiàng)目報(bào)告文檔添加編輯功能趙志軍完成

3、幻燈片播放功能、完成小程序功能諶超塵完成項(xiàng)目報(bào)告文檔、完成圖片首頁初始化陳慧完成項(xiàng)目需求文檔,完成PPT的制作完成圖片轉(zhuǎn)化格式功能施鳳婷完成項(xiàng)目需求文檔,完成PPT的制作完成圖片面板查看功能表2.1.12、項(xiàng)目進(jìn)度如表2.2.1所示:時(shí)間項(xiàng)目進(jìn)度完成者2016.4.27-2016.5.3收集資料,列出項(xiàng)目需求全體小組人員2016.5.5-2016.5.10完成項(xiàng)目框架崔利歡2016.5.11-2016.5.15完成項(xiàng)目瀏覽功能崔利歡陳慧施鳳婷2016.5.12-2016.5.18完成項(xiàng)目幻燈片功能趙志軍諶超塵2016.5.18-2016.6.2完成項(xiàng)目編輯功能崔利歡趙志軍2016.6.4-20

4、16.6.9完成項(xiàng)目整合全體小組人員表2.2.13、 項(xiàng)目相關(guān)技術(shù)1、圖片在面板中居中算法因?yàn)閳D片的大小不一樣,所以對(duì)圖片居中的顯示需要進(jìn)行分類處理。1) 對(duì)于寬度與高度都比放置圖片的面板小的,可以用屏幕的寬度(高度)減去圖片的寬度(高度) 再除以2,設(shè)置起始坐標(biāo)位置。2) 對(duì)于寬度比面板小的,而高度比面板的高度高的圖片,則圖片放置的起始位置的橫坐標(biāo)與1)中的處理方式相同,而圖片的縱坐標(biāo)的位置設(shè)置為10個(gè)像素。3) 對(duì)于高度比面板小的,而寬度比面板的寬度寬的圖片,則圖片放置的起始位置的縱坐標(biāo)與1)中的處理方式相同,而圖片的橫坐標(biāo)的位置設(shè)置為10個(gè)像素。4) 對(duì)于寬度與高度都比放置圖片的面板大的

5、,則將圖片的坐標(biāo)設(shè)置為(10,10)。代碼如下:protected void paintComponent(Graphics g) super.paintComponent(g);if (pathString != null) image = new ImageIcon(pathString).getImage();int a = image.getWidth(this) - this.getWidth();int b = image.getHeight(this) - this.getHeight();if(a > 0 && b > 0)g.drawImage(i

6、mage,10, 10, this.getWidth() - 10, this.getHeight() - 10, 0, 0, image.getWidth(this), image.getHeight(this), null);else if (a > 0 && b < 0) g.drawImage(image,10, -b / 2, this.getWidth() - 10, image.getHeight(null) - b / 2 , 0, 0, image.getWidth(this), image.getHeight(this), null);else

7、if (a< 0 && b > 0) g.drawImage(image,-a / 2, 10,image.getWidth(null) - a / 2, this.getHeight() - 10, 0, 0, image.getWidth(this), image.getHeight(this), null);else g.drawImage(image,-a / 2, -b / 2,image.getWidth(null) - a / 2, image.getHeight(null) - b / 2, 0, 0, image.getWidth(this), i

8、mage.getHeight(this), null); 2、瀏覽圖片時(shí)放大與縮小的算法 對(duì)于圖片的縮放可以根據(jù)一個(gè)分式的分子與分母同時(shí)加上或減去原式的分子與分母的比例的倍數(shù),則分式的大小不變的原理來進(jìn)行縮放圖片。代碼如下:float proportion = (float) (jFrame.image.getWidth(null)/ jFrame.image.getHeight(null);/獲得寬與高的比例jFrame.photoJpanel.setBounds(jFrame.photoJpanel.getX()- (int) (5 * proportion), jFrame.photoJ

9、panel.getY() - 5,jFrame.photoJpanel.getWidth() + (int) (10 * proportion),jFrame.photoJpanel.getHeight() + 10);/設(shè)置位置 3、圖片的上下張的算法 先獲得圖片的路徑,然后根據(jù)路徑將本文件下的圖片(通過文件過濾)的絕對(duì)路徑全部加載到ArrayList的集合中,然后對(duì)集合進(jìn)行操作。4、播放工具欄可以隱藏算法 在全屏播放時(shí),當(dāng)鼠標(biāo)移進(jìn)相應(yīng)的區(qū)域時(shí),工具欄面板會(huì)及時(shí)顯示出來。一個(gè)JFrame框架有許多面板層組成,最頂層的是玻璃面板,玻璃面板為不可見,透明的,把工具欄面板添加到玻璃面板中,并且將其

10、設(shè)置成可見,透明的,就可以達(dá)到以上的效果。代碼如下:fullToolJPanel = new FullToolJPanel();JPanel glasspane = new JPanel();setGlassPane(glasspane);glasspane.add(fullToolJPanel);glasspane.setLayout(null);glasspane.setOpaque(false);getGlassPane().setVisible(true);5、鍵盤與鼠標(biāo)交替使用算法為了實(shí)現(xiàn)鍵盤與鼠標(biāo)交替的使用,在這里需用將JFrame上的所有按鈕都設(shè)置成不聚焦點(diǎn),設(shè)置的方法是jbut

11、ton.setFocusable(false);6、圖片編輯算法為了實(shí)現(xiàn)對(duì)圖片進(jìn)行編輯處理,我們使用了雙緩沖技術(shù),將 image寫到bufferImage中,然后再對(duì)bufferImage中的圖像進(jìn)行處理,最后再將bufferImage中的圖片寫入到文件中。代碼如下(圖片放大處理): jFrame.photoJpanel.getHeight() + 10);/設(shè)置位置 BufferedImage buffImage1 = new BufferedImage(jFrame.photoJpanel.getWidth(), jFrame.photoJpanel.getHeight(),Buffere

12、dImage.TYPE_3BYTE_BGR);/創(chuàng)建雙緩沖對(duì)象Graphics g2 = buffImage1.createGraphics(); /獲得畫筆g2.drawImage(buffImage, 0, 0, jFrame.photoJpanel.getWidth(),/jFrame.photoJpanel.getHeight(), 0, 0, buffImage.getWidth(null),buffImage.getHeight(null), null);/將圖片繪到緩沖圖片中g(shù)2.dispose();/銷毀畫筆buffImage = buffImage1;/獲得緩沖引用對(duì)象7、編

13、輯圖片時(shí)圖片的縮放算法根據(jù)瀏覽圖片進(jìn)行縮放的算法,再創(chuàng)建一個(gè)緩沖圖像,將其大小設(shè)置成要縮放后的圖片,然后再把圖片繪制到緩沖圖像中。float proportion = (float) (jFrame.image.getWidth(null)/ jFrame.image.getHeight(null);/獲得寬與高的比例jFrame.photoJpanel.setBounds(jFrame.photoJpanel.getX()+ (int) (5 * proportion), jFrame.photoJpanel.getY() + 5,jFrame.photoJpanel.getWidth()

14、- (int) (10 * proportion),jFrame.photoJpanel.getHeight() - 10);/設(shè)置位置BufferedImage buffImage1 = new BufferedImage(jFrame.photoJpanel.getWidth(), jFrame.photoJpanel.getHeight(),BufferedImage.TYPE_3BYTE_BGR);/創(chuàng)建雙緩沖對(duì)象Graphics g2 = buffImage1.createGraphics();/獲得畫筆g2.drawImage(buffImage, 0, 0, jFrame.pho

15、toJpanel.getWidth(),jFrame.photoJpanel.getHeight(), 0, 0,buffImage.getWidth(null),buffImage.getHeight(null), null);/將圖片繪到緩沖圖片中g(shù)2.dispose();/銷毀畫筆4、 項(xiàng)目設(shè)計(jì)1、圖片瀏覽功能2、圖片編輯功能5、 項(xiàng)目實(shí)現(xiàn)如圖5.1所示,點(diǎn)擊圖片查看器.exe,則可以直接進(jìn)入軟件。 圖5.11、圖片查看器首頁如圖5.1.1所示,左邊是目錄導(dǎo)航,右邊是預(yù)覽窗口,預(yù)覽窗口之上有編輯按鈕,瀏覽按鈕,以及桌面小程序的啟動(dòng)與關(guān)閉按鈕。當(dāng)點(diǎn)擊預(yù)覽面板是就會(huì)彈出一個(gè)彈出菜單,可以對(duì)圖

16、片進(jìn)行編輯處理。圖5.1.1如圖5.1.2所示,當(dāng)點(diǎn)擊啟動(dòng)按鈕時(shí),就會(huì)出現(xiàn)一個(gè)桌面時(shí)鐘表。圖5.1.22、圖片查看功能頁面若想對(duì)圖片進(jìn)行瀏覽,則可直接雙擊預(yù)覽圖片面板或者可以點(diǎn)擊瀏按鈕也可以點(diǎn)擊左鍵然后點(diǎn)擊彈出菜單上的瀏覽選項(xiàng),則可跳入瀏覽面板頁面。如圖5.2.1所示: 圖5.2.1當(dāng)鼠標(biāo)移動(dòng)到不同位置時(shí),工具面板會(huì)相應(yīng)地發(fā)生變化,如圖5.2.2所示,當(dāng)鼠標(biāo)移動(dòng)到下一張位置時(shí),界面發(fā)生的變化。 圖5.2.2當(dāng)點(diǎn)擊工具面板上的幻燈片按鈕或按Enter鍵時(shí),就出現(xiàn)了如圖5.2.3所示的頁面。在此頁面中圖片以一定時(shí)間間隔播放圖片,這個(gè)時(shí)間間隔可以用戶自己設(shè)置,用戶可以暫停,也可以自己點(diǎn)擊進(jìn)行切換圖片

17、。圖5.2.3若用戶想要退出全屏瀏覽頁面,可以直拉按Esc鍵或者可以點(diǎn)擊屏幕上的關(guān)閉按鈕,就會(huì)退到首頁頁面。如圖5.2.4所示:圖5.2.43、圖片編輯功能頁面若想對(duì)圖片進(jìn)行編輯處理,則可直接點(diǎn)擊編輯按鈕也可以點(diǎn)擊左鍵然后點(diǎn)擊彈出菜單上的編輯菜單選項(xiàng),則可跳入編輯面板頁面。如圖5.3.1所示:圖5.3.1圖片編輯頁面分為菜單欄和圖片面板,菜單欄可以對(duì)圖片進(jìn)行一系列的編輯處理,如圖5.3.2所示,圖片特效菜單功能:圖5.3.2當(dāng)點(diǎn)擊文件菜單,選擇打開,則會(huì)彈出一個(gè)新的選擇圖片對(duì)話框,可以對(duì)圖片進(jìn)行重新選擇,如圖5.3.3所示:圖5.3.4如圖5.3.5所示圖片裁剪功能:圖5.3.5如圖5.3.6

18、所示圖片銳化功能:圖5.3.66、 總結(jié)與展望通過將近一個(gè)月的項(xiàng)目中,使我們學(xué)到了很多東西,也讓我們看到了自己的在一些知識(shí)上的不足,也將使我們?cè)诤竺鎗ava web的學(xué)習(xí)中還要更加努力,以便將來找到自己適意的工作,在這次項(xiàng)目中我學(xué)到了很多東西,不只是代碼上的知識(shí),也學(xué)到了java框架上的一些基本東西,還有層次結(jié)構(gòu)的好處和由來,怎樣實(shí)現(xiàn)封裝使得更好的保護(hù)數(shù)據(jù),實(shí)現(xiàn)java的三大特點(diǎn),使代碼的耦合度降低提高內(nèi)聚力類和類之間的依賴性降低使模塊和模塊之間的層次分明,實(shí)現(xiàn)代碼的復(fù)用和實(shí)現(xiàn)結(jié)構(gòu)的復(fù)用使得開發(fā)一個(gè)系統(tǒng)的性能更加的優(yōu)異。在這次項(xiàng)目中使我對(duì)java面向?qū)ο蟮恼J(rèn)識(shí)有了更深刻的印象,對(duì)“萬物皆為對(duì)象“這個(gè)理念有更深層次的理解,通過和老師的交流和上網(wǎng)了解的一些知識(shí),其實(shí)做軟件的實(shí)質(zhì)并不是在代碼上實(shí)現(xiàn)什么樣的功能,你只要愿意去用你所學(xué)的知識(shí)肯定能夠?qū)崿F(xiàn)某個(gè)功能,但學(xué)軟件的最根本是分析和設(shè)計(jì),所以現(xiàn)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論