![圖像處理系統(tǒng)詳細(xì)設(shè)計說明書_第1頁](http://file4.renrendoc.com/view/dc419638d63d55f6082cc82c5fabafc4/dc419638d63d55f6082cc82c5fabafc41.gif)
![圖像處理系統(tǒng)詳細(xì)設(shè)計說明書_第2頁](http://file4.renrendoc.com/view/dc419638d63d55f6082cc82c5fabafc4/dc419638d63d55f6082cc82c5fabafc42.gif)
![圖像處理系統(tǒng)詳細(xì)設(shè)計說明書_第3頁](http://file4.renrendoc.com/view/dc419638d63d55f6082cc82c5fabafc4/dc419638d63d55f6082cc82c5fabafc43.gif)
![圖像處理系統(tǒng)詳細(xì)設(shè)計說明書_第4頁](http://file4.renrendoc.com/view/dc419638d63d55f6082cc82c5fabafc4/dc419638d63d55f6082cc82c5fabafc44.gif)
![圖像處理系統(tǒng)詳細(xì)設(shè)計說明書_第5頁](http://file4.renrendoc.com/view/dc419638d63d55f6082cc82c5fabafc4/dc419638d63d55f6082cc82c5fabafc45.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
案卷號日期圖像處理系統(tǒng)詳細(xì)設(shè)計說明書作者:YOUNGREGINGROUP團(tuán)隊完成日期:2016.8.24簽收人:簽收日期:修改情況記錄:版本號修改批準(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è)計說明43.1主窗口設(shè)計43.2圖像旋轉(zhuǎn)模塊功能設(shè)計63.3圖像縮放模塊設(shè)計錯誤!未定義書簽。3.4圖片水印效果模塊設(shè)計183.5照片版式處理模塊設(shè)計193.6流程邏輯錯誤!未定義書簽。位圖數(shù)據(jù)的存儲形式5限制條件46測試計劃41引言1.1編寫目的本詳細(xì)設(shè)計說明書主要目的是對圖像管理系統(tǒng)的功能設(shè)計進(jìn)行詳盡的說明。本說明書主要寫了圖像管理系統(tǒng)功能模塊的詳細(xì)設(shè)計,為后來的開發(fā)提供依據(jù)與參考。詳細(xì)設(shè)計說明書面向人員有:程序設(shè)計人員、數(shù)據(jù)庫設(shè)計人員,質(zhì)量檢測人員。1.2背景a.項目名稱:圖像管理系統(tǒng)b.本項目的任務(wù)提出者:西安軟件服務(wù)外包學(xué)院開發(fā)者:YOUNGREGINGROUP團(tuán)隊1.3定義本系統(tǒng)屬于開發(fā)小型的圖像處理軟件,主要用于實現(xiàn)圖像的顯示與批量轉(zhuǎn)換操作。實現(xiàn)各種圖像格式的顯示。支持圖像的單一轉(zhuǎn)換與批量轉(zhuǎn)換。實現(xiàn)位圖的各種常規(guī)操作。1.4參考資料《C++程序設(shè)計》,譚浩強(qiáng),清華大學(xué)出版社;《VisualC++《VisualC++項目開發(fā)案例全程實錄》,梁水,李偉明著,清華大學(xué)出版社。2程序系統(tǒng)的結(jié)構(gòu)這是“圖像管理系統(tǒng)”的整體系統(tǒng)結(jié)構(gòu)圖。3系統(tǒng)整體及模塊顯示設(shè)計說明3.1主窗口設(shè)計在這個系統(tǒng)里,主要實現(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è)計1.添加一個對話框類,類名為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("請選擇真彩色位圖!","提示");return;}if(m_bmInfoHeader.biSizeImage==0){intexternWidth;//計算源位圖每行使用的字節(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è)置滾動范圍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ù)定角度for(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é)對齊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è)置滾動范圍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è)計新建一個對話框類,類名為CStretchlmage,界面如下:
向?qū)υ捒蛑刑砑影粹o、靜態(tài)文本、群組框、滑塊、復(fù)選框、圖片等控件。3.設(shè)置控件屬性如下4.處理…、縮放、保存按鈕事件。圖片水印效果模塊設(shè)計實現(xiàn)水印效果主要代碼為:Bitmap*pBmp=Bitmap::FromFiIe(strfile.AllocSysStringO);if(pBmp)Graphics*pGraph=Graphics::Fromlmage(pBmp);"很據(jù)圖像關(guān)聯(lián)一個Graphics對象指針PointForigin(0,0f,O.Of);//定義坐標(biāo)點RectFTextRC;餛義區(qū)域?qū)ο?獲取字符串的寬度pGTaph->MeasureString(m_WateText.AllocSysString(),nLen,font^ongin,&TextRC);"繪制位圖pGraph->DrawIniage>(pBmp,0,0,pBmp->GetWid(h(),pBmp->GetHeight());"在位圖上繪制文本實現(xiàn)水印效果pGraph->E)rawString(Tn_WateText.A]l<K!SysString(),nLen,font,ptffbrush);創(chuàng)建一個對話框類,類名為CImageWater。向?qū)υ捒蛑刑砑影粹o、靜態(tài)文本、群組框、滑塊、復(fù)選框、圖片等控件。界面如下:4.設(shè)置控件屬性如下:33.設(shè)置控件屬性如下:5.處理…、縮放、保存按鈕事件。照片版式處理模塊設(shè)計1.創(chuàng)建一個對話框類,類名為CPhotoHandle。2.向?qū)υ捒蛑刑砑影粹o、靜態(tài)文本、群組框、滑塊、復(fù)選框、圖片等控件。界面如下:
4.處理…、縮放、保存按鈕事件。3.5PSD文件瀏覽模塊設(shè)計1.創(chuàng)建一個對話框類,類名為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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技發(fā)展與學(xué)科教育的互促關(guān)系研究
- 科技教育編程教育的普及與推廣
- DB4453T 30-2025廣藿香組培苗生產(chǎn)技術(shù)規(guī)程
- DB35T 2232-2024海峽兩岸共通 火龍果生產(chǎn)技術(shù)規(guī)程
- 東莞企業(yè)勞動合同范本
- 個人貸款房屋抵押合同模板大全
- 業(yè)務(wù)經(jīng)營權(quán)轉(zhuǎn)讓合同
- 個人車位共有權(quán)買賣合同
- 臨時倉儲合同范本
- 兩人股權(quán)轉(zhuǎn)讓合同范本
- IEC-62368-1-差異分享解讀
- 如何當(dāng)好學(xué)校的中層干部
- SWITCH塞爾達(dá)傳說曠野之息-1.6金手指127項修改使用說明教程
- 2022-2023學(xué)年廣東省佛山市順德區(qū)高三(下)模擬英語試卷
- 節(jié)后復(fù)工培訓(xùn)內(nèi)容五篇
- GB/T 33322-2016橡膠增塑劑芳香基礦物油
- GA 1051-2013槍支彈藥專用保險柜
- 某水毀公路維修工程施工方案
- 家庭病房工作制度和人員職責(zé)
- 建設(shè)工程監(jiān)理合同示范文本GF-2018-0202
- 2022質(zhì)檢年終工作總結(jié)5篇
評論
0/150
提交評論