版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
案卷號(hào)日期圖像處理系統(tǒng)詳細(xì)設(shè)計(jì)說(shuō)明書作者:YOUNGREGINGROUP團(tuán)隊(duì)完成日期:2016.8.24簽收人:簽收日期:修改情況記錄:版本號(hào)修改批準(zhǔn)人修改人修改日期簽收人1.0楊開2016.8.231.1楊開2016.8.24目錄TOC\o"1-5"\h\z1引言21.1編寫目的21.2背景21.3定義21.4參考資料2程序系統(tǒng)的結(jié)構(gòu)3系統(tǒng)登陸設(shè)計(jì)說(shuō)明43.1主窗口設(shè)計(jì)43.2圖像旋轉(zhuǎn)模塊功能設(shè)計(jì)63.3圖像縮放模塊設(shè)計(jì)錯(cuò)誤!未定義書簽。3.4圖片水印效果模塊設(shè)計(jì)183.5照片版式處理模塊設(shè)計(jì)193.6流程邏輯錯(cuò)誤!未定義書簽。位圖數(shù)據(jù)的存儲(chǔ)形式5限制條件46測(cè)試計(jì)劃41引言1.1編寫目的本詳細(xì)設(shè)計(jì)說(shuō)明書主要目的是對(duì)圖像管理系統(tǒng)的功能設(shè)計(jì)進(jìn)行詳盡的說(shuō)明。本說(shuō)明書主要寫了圖像管理系統(tǒng)功能模塊的詳細(xì)設(shè)計(jì),為后來(lái)的開發(fā)提供依據(jù)與參考。詳細(xì)設(shè)計(jì)說(shuō)明書面向人員有:程序設(shè)計(jì)人員、數(shù)據(jù)庫(kù)設(shè)計(jì)人員,質(zhì)量檢測(cè)人員。1.2背景a.項(xiàng)目名稱:圖像管理系統(tǒng)b.本項(xiàng)目的任務(wù)提出者:西安軟件服務(wù)外包學(xué)院開發(fā)者:YOUNGREGINGROUP團(tuán)隊(duì)1.3定義本系統(tǒng)屬于開發(fā)小型的圖像處理軟件,主要用于實(shí)現(xiàn)圖像的顯示與批量轉(zhuǎn)換操作。實(shí)現(xiàn)各種圖像格式的顯示。支持圖像的單一轉(zhuǎn)換與批量轉(zhuǎn)換。實(shí)現(xiàn)位圖的各種常規(guī)操作。1.4參考資料《C++程序設(shè)計(jì)》,譚浩強(qiáng),清華大學(xué)出版社;《VisualC++《VisualC++項(xiàng)目開發(fā)案例全程實(shí)錄》,梁水,李偉明著,清華大學(xué)出版社。2程序系統(tǒng)的結(jié)構(gòu)這是“圖像管理系統(tǒng)”的整體系統(tǒng)結(jié)構(gòu)圖。3系統(tǒng)整體及模塊顯示設(shè)計(jì)說(shuō)明3.1主窗口設(shè)計(jì)在這個(gè)系統(tǒng)里,主要實(shí)現(xiàn)用戶登錄進(jìn)入系統(tǒng)后可以查詢和添加相關(guān)信息工作區(qū)菜單代碼:m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);m_wndToolBar.SetButtonText(0,"銳化處理");m_wndToolBar.SetButtonText(l,"反色處理");m_wndToolBar.SetButtonText(2,"圖像旋轉(zhuǎn)");m_wndToolBar.SetButtonText(3,"圖像平移");m_wndToolBar.SetButtonText(4,"圖像縮放");m_wndToolBar.SetButtonText(5,"水印效果");m_wndToolBar.SetButtonText(6,"位圖轉(zhuǎn)換JPEG");m_wndToolBar.SetButtonText(7,"JPEG轉(zhuǎn)換位圖");m_wndToolBar.SetButtonText(8,"水印批量處理");m_wndToolBar.SetButtonText(9,"PSD文件瀏覽");m_wndToolBar.SetButtonText(10,"PSD批量轉(zhuǎn)換");m_wndToolBar.SetButtonText(ll,"照片版式處理");設(shè)置狀態(tài)欄,關(guān)聯(lián)圖標(biāo)資源:UINTnID;//控制狀態(tài)欄里面的分欄m_wndStatusBar.SetPaneInfo(0,nID,SBPS_STRETCH|SBPS_NOBORDERS,100);//返回值存nID中m_wndStatusBar.SetPaneText(0,"就緒");m_wndStatusBar.SetPaneInfo(1,nID,SBPS_NORMAL,100);m_wndStatusBar.SetPaneText(l,"大寫");m_wndStatusBar.SetPaneInfo(2,nID,SBPS_POPOUT,100);m_wndStatusBar.SetPaneText(2,"數(shù)字");//加載圖像資源m_ImageList.Create(32,32,ILC_COLOR32|ILC_MASK,1,1);m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON3));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON1));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON2));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON4));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON5));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON6));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON7));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON8));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON9));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON10));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON11));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON12));
圖像旋轉(zhuǎn)模塊功能設(shè)計(jì)1.添加一個(gè)對(duì)話框類,類名為CImageRota。窗口如下:2.向?qū)υ捒蛑刑砑影粹o、文本框、單選按鈕、滑塊、圖片控件。3.設(shè)置主要控件屬性,如下表所示:4.處理…事件:voidCImageRota::OnBtLoad(){//TODO:AddyourcontrolnotificationhandlercodehereCflDlg(TRUE,"","",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,位圖文件l*.bmpll",this);if(flDlg.DoModal()==IDOK){CStringcs=flDlg.GetPathName();m_SrcFile=flDlg.GetPathName();m_BmpName.SetWindowText(cs);if(m_hBmp!=NULL){DeleteObject(m_hBmp);m_hBmp=NULL;}m_hBmp=(HBITMAP)LoadImage(NULL,cs);if(m_hBmp){m_Image.SetBitmap(m_hBmp);m_bLoaded=TRUE;}C;(cs);(&m_bm(BITMAP));(&m_bmInfoHeader,sizeof(BITMAPINFOHEADER));intszPalette=0;if(m_bmInfoHeader.biBitCount!=24){();MessageBox("請(qǐng)選擇真彩色位圖!","提示");return;}if(m_bmInfoHeader.biSizeImage==0){intexternWidth;//計(jì)算源位圖每行使用的字節(jié)數(shù)externWidth=m_bmInfoHeader.biWidth*3;if(externWidth%4!=0)externWidth=4-externWidth%4;elseexternWidth=0;m_bmInfoHeader.biSizeImage=m_bmInfoHeader.biHeight*(m_bmInfoHeader.biWidth*3+externWidth)}intnBmpData=m_bmInfoHeader.biSizeImage;if(m_pBmpData!=NULL){{delete[]m_pBmpData;m_pBmpData=NULL;}m_pBmpData=newBYTE[nBmpData];(m_pBmpData,nBmpData);();intsizeofbuffer=m_bmInfoHeader.biWidthm_bmInfoHeader.biHeight*4;intexternWidth;externWidth=m_bmInfoHeader.biWidth*3;if(externWidth%4!=0)externWidth=4-externWidth%4;elseexternWidth=0;intk=0;BYTE*m_pImageTempBuffer=newBYTE[sizeofbuffer];for(intn=m_bmInfoHeader.biHeight-1;n>=0;n--)for(UINTm=0;m<m_bmInfoHeader.biWidth*3;m+=3){m_pImageTempBuffer[k]=m_pBmpData[n*(m_bmInfoHeader.biWidth*3+externWidth)+m];//bluem_pImageTempBuffer[k+1]=m_pBmpData[n*(m_bmInfoHeader.biWidth*3+externWidth)+m+1];//greenm_pImageTempBuffer[k+2]=m_pBmpData[n*(m_bmInfoHeader.biWidth*3+externWidth)+m+2];//redm_pImageTempBuffer[k+3]=255;k+=4;}}delete[]m_pBmpData;m_pBmpData=newBYTE[sizeofbuffer];memcpy(m_pBmpData,m_pImageTempBuffer,sizeofbuffer);delete[]m_pImageTempBuffer;//設(shè)置滾動(dòng)范圍CRectbmpRC,wndRC;m_ImagePanel.GetClientRect(wndRC);//獲取面板的客戶區(qū)域m_Image.GetClientRect(bmpRC);//獲取圖片空間的客戶區(qū)域m_ImagePanel.OnHScroll(SB_LEFT,1,NULL);m_ImagePanel.OnVScroll(SB_LEFT,1,NULL);m_ImagePanel.SetScrollRange(SB_VERT,0,bmpRC.Height()-wndRC.Height());m_ImagePanel.SetScrollRange(SB_HORZ,0,bmpRC.Width()-wndRC.Width());}}向?qū)υ捒蛑刑砑覴otateBmp方法,按指定的角度旋轉(zhuǎn)。向?qū)υ捒蛑刑砑覴otationimage方法,并調(diào)用RotateBmp方法處理圖像。處理旋轉(zhuǎn)按鈕事件voidCImageRota::OnBtRotate()//TODO:Addyourcontrolnotificationhandlercodehereif(m_bLoaded){//確定旋轉(zhuǎn)方式CButton*pButton(CButton*)GetDlgItem(IDC_FIXDEGREE);intnState=0;intnDegree=0;if(pButton!=NULL){nState=pButton->GetCheck();}if(nState)//預(yù)定角度f(wàn)or(intnID=IDC_ROTATE45;nID<=IDC_ROTATE270;nID++){pButton=(CButton*)GetDlgItem(nID);if(pButton!=NULL)nState=pButton->GetCheck();if(nState){CStringcsText;pButton->GetWindowText(csText);intnPos=csText.Find("°");nDegree=atoi(csText.Left(nPos));break;}}}}else//固定角度{UpdateData(FALSE);nDegree=m_nDegree;}//確定旋轉(zhuǎn)角度RotationImage(&m_bmInfoHeader,nDegree);BYTEbyByteAlign;//位圖行字節(jié)對(duì)齊UINToutHeight=m_bmInfoHeader.biHeight;UINToutWidth=m_bmInfoHeader.biWidth;
BYTE*pBmpDatanewBYTEBYTE*pBmpDatanewBYTE[m_bmInfoHeader.biSizeImage];memset(pBmpData,0,m_bmInfoHeader.biSizeImage);pListDataBYTE*pListData=m_pBmpData+((DWORD)outHeight-1)*outWidth*4;if(outWidth%4!=0)byByteAlign=4-((outWidth*3L)%4);elsebyByteAlign=0;BYTEbyZeroData=0;BYTE*pTmpData=pBmpData;for(inty=0;y<outHeight;y++){for(intx=0;x<outWidth;x++){memcpy(pTmpData,pListData,3);pTmpData+=3;pListData+=4;}for(inti=0;i<byByteAlign;i++){memcpy(pTmpData,&byZeroData,1);pTmpData=pTmpData+1;}pListData-=2L*outWidth*4;}CDC*pDC=m_Image.GetDC();BITMAPINFObInfo;bInfo.bmiHeader=m_bmInfoHeader;HBITMAPhBmp=m_Image.SetBitmap(CreateDIBitmap(pDC->m_hDC,&m_bmInfoHeader,CBM_INIT,pBmpData,&bInfo,DIB_RGB_COLORS));if(hBmp!=NULL){::DeleteObject(hBmp);}delete[]pBmpData;//設(shè)置滾動(dòng)范圍CRectbmpRC,wndRC;m_ImagePanel.GetClientRect(wndRC);m_Image.GetClientRect(bmpRC);m_ImagePanel.OnHScroll(SB_LEFT,1,NULL);m_ImagePanel.OnVScroll(SB_LEFT,1,NULL);m_ImagePanel.SetScrollRange(SB_VERT,0,bmpRC.Height()-wndRC.Height());m_ImagePanel.SetScrollRange(SB_HORZ,0,bmpRC.Width()-wndRC.Width());}}8.處理保存按鈕事件圖像縮放模塊設(shè)計(jì)新建一個(gè)對(duì)話框類,類名為CStretchlmage,界面如下:
向?qū)υ捒蛑刑砑影粹o、靜態(tài)文本、群組框、滑塊、復(fù)選框、圖片等控件。3.設(shè)置控件屬性如下4.處理…、縮放、保存按鈕事件。圖片水印效果模塊設(shè)計(jì)實(shí)現(xiàn)水印效果主要代碼為:Bitmap*pBmp=Bitmap::FromFiIe(strfile.AllocSysStringO);if(pBmp)Graphics*pGraph=Graphics::Fromlmage(pBmp);"很據(jù)圖像關(guān)聯(lián)一個(gè)Graphics對(duì)象指針PointForigin(0,0f,O.Of);//定義坐標(biāo)點(diǎn)RectFTextRC;餛義區(qū)域?qū)ο?獲取字符串的寬度pGTaph->MeasureString(m_WateText.AllocSysString(),nLen,font^ongin,&TextRC);"繪制位圖pGraph->DrawIniage>(pBmp,0,0,pBmp->GetWid(h(),pBmp->GetHeight());"在位圖上繪制文本實(shí)現(xiàn)水印效果pGraph->E)rawString(Tn_WateText.A]l<K!SysString(),nLen,font,ptffbrush);創(chuàng)建一個(gè)對(duì)話框類,類名為CImageWater。向?qū)υ捒蛑刑砑影粹o、靜態(tài)文本、群組框、滑塊、復(fù)選框、圖片等控件。界面如下:4.設(shè)置控件屬性如下:33.設(shè)置控件屬性如下:5.處理…、縮放、保存按鈕事件。照片版式處理模塊設(shè)計(jì)1.創(chuàng)建一個(gè)對(duì)話框類,類名為CPhotoHandle。2.向?qū)υ捒蛑刑砑影粹o、靜態(tài)文本、群組框、滑塊、復(fù)選框、圖片等控件。界面如下:
4.處理…、縮放、保存按鈕事件。3.5PSD文件瀏覽模塊設(shè)計(jì)1.創(chuàng)建一個(gè)對(duì)話框類,類名為CPsdBrowse。2.向?qū)υ捒蛑刑砑影粹o、靜態(tài)文本、群組框、滑塊、復(fù)選框、圖片等控件。界面如下:義如下:義如下:h/lF匚匚lassWizardMessageMapsMeirbsrVariablesAutomationActiveXEventsClaimsInfoProject:Classname:demoCPsdBrowse■UdEinciover\PsdBrowseD^.-^demoover^PsdHrowse.cppControlIDs:AddClass...uD□□nD□D-RMPNAMECEditmiBmpNairiEProject:Classname:demoCPsdBrowse■UdEinciover\PsdBrowseD^.-^demoover^PsdHrowse.cppControlIDs:AddClass...uD□□nD□D-RMPNAMECEditmiBmpNairiEtJILUftDBTSAVEimAg匚CStaticm_liiiidgeLAYtHCUUNlintm
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度暖通工程保險(xiǎn)合同
- 課題申報(bào)參考:明清時(shí)期俄人旅華游記中的中國(guó)形象研究
- 課題申報(bào)參考:面向大學(xué)生情緒調(diào)節(jié)的人工智能眼動(dòng)交互音樂(lè)生成系統(tǒng)設(shè)計(jì)研究
- 二零二五年度模具行業(yè)創(chuàng)新項(xiàng)目合作合同2篇
- 2025版選礦廠礦山地質(zhì)勘查承包合同樣本3篇
- 2025年度個(gè)人汽車租賃與停車服務(wù)合同4篇
- 2025版寧夏糧食和物資儲(chǔ)備局糧食儲(chǔ)備庫(kù)智能化升級(jí)合同3篇
- 2025年度牛糞處理設(shè)施融資租賃合同范本4篇
- 2025版農(nóng)副業(yè)科技成果轉(zhuǎn)化承包合同書二份3篇
- 二零二五年度磚廠生產(chǎn)線承包租賃合同3篇
- 2024年銀行考試-興業(yè)銀行筆試參考題庫(kù)含答案
- 泵站運(yùn)行管理現(xiàn)狀改善措施
- 2024屆武漢市部分學(xué)校中考一模數(shù)學(xué)試題含解析
- SYT 0447-2014《 埋地鋼制管道環(huán)氧煤瀝青防腐層技術(shù)標(biāo)準(zhǔn)》
- 第19章 一次函數(shù) 單元整體教學(xué)設(shè)計(jì) 【 學(xué)情分析指導(dǎo) 】 人教版八年級(jí)數(shù)學(xué)下冊(cè)
- 浙教版七年級(jí)下冊(cè)科學(xué)全冊(cè)課件
- 弧度制及弧度制與角度制的換算
- 瓦楞紙箱計(jì)算公式測(cè)量方法
- 江蘇省中等職業(yè)學(xué)校學(xué)業(yè)水平考試商務(wù)營(yíng)銷類(營(yíng)銷方向)技能考試測(cè)試題
- DB32-T 4004-2021水質(zhì) 17種全氟化合物的測(cè)定 高效液相色譜串聯(lián)質(zhì)譜法-(高清現(xiàn)行)
- DB15T 2724-2022 羊糞污收集處理技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論