




版權(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目錄1引言 21.1編寫目的 21.2背景 21.3定義 21.4參考資料 22程序系統(tǒng)的結(jié)構(gòu) 33系統(tǒng)登陸設(shè)計(jì)說(shuō)明 43.1主窗口設(shè)計(jì) 43.2圖像旋轉(zhuǎn)模塊功能設(shè)計(jì) 43.3圖像縮放模塊設(shè)計(jì) 43.4圖片水印效果模塊設(shè)計(jì) 53.5照片版式處理模塊設(shè)計(jì) 53.6流程邏輯 64位圖數(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背景項(xiàng)目名稱:圖像管理系統(tǒng)本項(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++項(xiàng)目開發(fā)案例全程實(shí)錄》,梁水,李偉明著,清華大學(xué)出版社。圖像處理模塊2程序系統(tǒng)的結(jié)構(gòu)圖像處理模塊退出系統(tǒng)退出系統(tǒng)主窗體主窗體批量轉(zhuǎn)換與處理照片處理PSD文件管理批量轉(zhuǎn)換與處理照片處理PSD文件管理打開位圖圖像銳化處理圖像銳化處理圖像反色處理圖像旋轉(zhuǎn)位圖轉(zhuǎn)換成位圖轉(zhuǎn)換成GIF圖像浮雕效果水印效果批量處理PSD文件批量轉(zhuǎn)換PSD文件瀏覽位圖轉(zhuǎn)換成GIF位圖轉(zhuǎn)換為PNG水印效果批量處理GIF轉(zhuǎn)換成位圖圖像浮雕效果水印效果批量處理PSD文件批量轉(zhuǎn)換PSD文件瀏覽位圖轉(zhuǎn)換成GIF位圖轉(zhuǎn)換為PNG水印效果批量處理GIF轉(zhuǎn)換成位圖JPEG轉(zhuǎn)換成位圖位圖轉(zhuǎn)換成JPEG這是“圖像管理系統(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(1,"反色處理"); 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(11,"照片版式處理");設(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(1,"大寫");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));3.2圖像旋轉(zhuǎn)模塊功能設(shè)計(jì)1.添加一個(gè)對(duì)話框類,類名為CImageRota。窗口如下:2.向?qū)υ捒蛑刑砑影粹o、文本框、單選按鈕、滑塊、圖片控件。3.設(shè)置主要控件屬性,如下表所示:4.處理…事件:voidCImageRota::OnBtLoad(){ //TODO:Addyourcontrolnotificationhandlercodehere CFileDialogflDlg(TRUE,"","",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"位圖文件|*.bmp||",this); if(flDlg.DoModal()==IDOK) { CStringcsFileName=flDlg.GetPathName(); m_SrcFile=flDlg.GetPathName(); m_BmpName.SetWindowText(csFileName); if(m_hBmp!=NULL) { DeleteObject(m_hBmp); m_hBmp=NULL; } m_hBmp=(HBITMAP)LoadImage(NULL,csFileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); if(m_hBmp) { m_Image.SetBitmap(m_hBmp); m_bLoaded=TRUE; } CFilefile; file.Open(csFileName,CFile::modeRead); file.Read(&m_bmFileHeader,sizeof(BITMAPFILEHEADER)); file.Read(&m_bmInfoHeader,sizeof(BITMAPINFOHEADER)); intszPalette=0; if(m_bmInfoHeader.biBitCount!=24) { file.Close(); 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; else externWidth=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]; file.ReadHuge(m_pBmpData,nBmpData); file.Close(); intsizeofbuffer=m_bmInfoHeader.biWidth*m_bmInfoHeader.biHeight*4; intexternWidth; externWidth=m_bmInfoHeader.biWidth*3; if(externWidth%4!=0) externWidth=4-externWidth%4; else externWidth=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]; //blue m_pImageTempBuffer[k+1]=m_pBmpData[n*(m_bmInfoHeader.biWidth*3+externWidth)+m+1];//green m_pImageTempBuffer[k+2]=m_pBmpData[n*(m_bmInfoHeader.biWidth*3+externWidth)+m+2];//red m_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()); }}5.向?qū)υ捒蛑刑砑覴otateBmp方法,按指定的角度旋轉(zhuǎn)。6.向?qū)υ捒蛑刑砑覴otationImage方法,并調(diào)用RotateBmp方法處理圖像。7.處理旋轉(zhuǎn)按鈕事件voidCImageRota::OnBtRotate(){ //TODO:Addyourcontrolnotificationhandlercodehere if(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é)對(duì)齊 UINToutHeight=m_bmInfoHeader.biHeight; UINToutWidth=m_bmInfoHeader.biWidth; BYTE*pBmpData=newBYTE[m_bmInfoHeader.biSizeImage]; memset(pBmpData,0,m_bmInfoHeader.biSizeImage); BYTE*pListData=m_pBmpData+((DWORD)outHeight-1)*outWidth*4; if(outWidth%4!=0) byByteAlign=4-((outWidth*3L)%4); else byByteAlign=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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鍋爐房惡劣天氣應(yīng)急預(yù)案(3篇)
- 榆中縣文成小學(xué)應(yīng)急預(yù)案(3篇)
- 消防維保應(yīng)急搶修預(yù)案模板(3篇)
- 汕尾環(huán)境應(yīng)急預(yù)案哪家靠譜(3篇)
- 吉林醫(yī)藥學(xué)院《古建虛擬漫游》2024-2025學(xué)年第一學(xué)期期末試卷
- 彩鋼板墻面施工方案(3篇)
- 濰坊護(hù)理職業(yè)學(xué)院《中級(jí)微觀經(jīng)濟(jì)學(xué)(管學(xué)與工程)》2024-2025學(xué)年第一學(xué)期期末試卷
- 浙江警官職業(yè)學(xué)院《工程流體力學(xué)Ⅲ》2024-2025學(xué)年第一學(xué)期期末試卷
- 廣東茂名幼兒師范專科學(xué)?!犊茖W(xué)計(jì)算實(shí)驗(yàn)》2024-2025學(xué)年第一學(xué)期期末試卷
- 吉林科技職業(yè)技術(shù)學(xué)院《SQ數(shù)據(jù)庫(kù)系統(tǒng)》2024-2025學(xué)年第一學(xué)期期末試卷
- 2025年公文核改競(jìng)賽試題及答案
- 2025歷年退役軍人考試題庫(kù)及答案
- 第一二單元月考綜合試卷(試題)四年級(jí)上冊(cè)數(shù)學(xué)滬教版
- 2025級(jí)新生軍訓(xùn)開訓(xùn)儀式動(dòng)員大會(huì)
- 農(nóng)產(chǎn)品質(zhì)量安全標(biāo)準(zhǔn)體系與實(shí)施路徑-洞察及研究
- 中組部選調(diào)生管理辦法
- 克痙方濕熱敷:缺血性腦卒中后上肢肌肉痙攣康復(fù)新路徑
- 血常規(guī)檢驗(yàn)中的質(zhì)量控制
- 高尿酸血癥健康管理方案
- 秋季肌膚護(hù)理課件
- 工廠規(guī)章制度員工守則.doc
評(píng)論
0/150
提交評(píng)論