圖像處理系統(tǒng)詳細設計說明書(共24頁)_第1頁
圖像處理系統(tǒng)詳細設計說明書(共24頁)_第2頁
圖像處理系統(tǒng)詳細設計說明書(共24頁)_第3頁
圖像處理系統(tǒng)詳細設計說明書(共24頁)_第4頁
圖像處理系統(tǒng)詳細設計說明書(共24頁)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上案卷號日期圖像處理系統(tǒng)詳細設計說明書 作 者: YOUNG REGIN GROUP團隊 完成日期: 2016.8.24 簽 收 人: 簽收日期: 修改情況記錄:版本號修改批準人修改人修改日期簽收人1.0楊開2016.8231.1楊開2016.824 專心-專注-專業(yè)目錄 位圖數(shù)據(jù)的存儲形式1 引言1.1 編寫目的本詳細設計說明書主要目的是對圖像管理系統(tǒng)的功能設計進行詳盡的說明。本說明書主要寫了圖像管理系統(tǒng)功能模塊的詳細設計,為后來的開發(fā)提供依據(jù)與參考。詳細設計說明書面向人員有:程序設計人員、數(shù)據(jù)庫設計人員,質量檢測人員。1.2 背景a 項目名稱:圖像管理系統(tǒng)b 本項目

2、的任務提出者:西安軟件服務外包學院開發(fā)者:YOUNG REGIN GROUP 團隊1.3 定義本系統(tǒng)屬于開發(fā)小型的圖像處理軟件,主要用于實現(xiàn)圖像的顯示與批量轉換操作。實現(xiàn)各種圖像格式的顯示。支持圖像的單一轉換與批量轉換。實現(xiàn)位圖的各種常規(guī)操作。1.4 參考資料C+程序設計,譚浩強,清華大學出版社; Visual C+項目開發(fā)案例全程實錄,梁水,李偉明著,清華大學出版社。圖像處理模塊2 程序系統(tǒng)的結構退出系統(tǒng)主窗體批量轉換與處理照片處理PSD文件管理打開位圖圖像銳化處理圖像反色處理圖像旋轉 位圖轉換成GIF圖像浮雕效果水印效果批量處理PSD文件批量轉換PSD文件瀏覽位圖轉換成GIF位圖轉換為PN

3、G水印效果批量處理GIF轉換成位圖JPEG轉換成位圖位圖轉換成JPEG這是“圖像管理系統(tǒng)”的整體系統(tǒng)結構圖。3 系統(tǒng)整體及模塊顯示設計說明3.1 主窗口設計在這個系統(tǒng)里,主要實現(xiàn)用戶登錄進入系統(tǒng)后可以查詢和添加相關信息。工作區(qū)菜單代碼:m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);m_wndToolBar.SetButtonText(0,"銳化處理");m_wndToolBar.SetButtonText(1,"反色處理");m_wndToolBar.SetButtonText(

4、2,"圖像旋轉");m_wndToolBar.SetButtonText(3,"圖像平移");m_wndToolBar.SetButtonText(4,"圖像縮放");m_wndToolBar.SetButtonText(5,"水印效果");m_wndToolBar.SetButtonText(6,"位圖轉換JPEG");m_wndToolBar.SetButtonText(7,"JPEG轉換位圖");m_wndToolBar.SetButtonText(8,"水印

5、批量處理");m_wndToolBar.SetButtonText(9,"PSD文件瀏覽");m_wndToolBar.SetButtonText(10,"PSD批量轉換");m_wndToolBar.SetButtonText(11,"照片版式處理");設置狀態(tài)欄,關聯(lián)圖標資源:UINT nID; /控制狀態(tài)欄里面的分欄 m_wndStatusBar.SetPaneInfo(0,nID,SBPS_STRETCH|SBPS_NOBORDERS,100); /返回值存nID中 m_wndStatusBar.SetPaneTex

6、t(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(:AfxGet

7、App()->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_Ima

8、geList.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()->LoadI

9、con(IDI_ICON12);3.2 圖像旋轉模塊功能設計1.添加一個對話框類,類名為CImageRota。窗口如下:2.向對話框中添加按鈕、文本框、單選按鈕、滑塊、圖片控件。3.設置主要控件屬性,如下表所示:4.處理事件:void CImageRota:OnBtLoad() / TODO: Add your control notification handler code hereCFileDialog flDlg(TRUE,"","",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"位圖文件|*.bmp|

10、",this);if (flDlg.DoModal()=IDOK)CString csFileName = 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.Se

11、tBitmap(m_hBmp);m_bLoaded = TRUE;CFile file;file.Open(csFileName,CFile:modeRead);file.Read(&m_bmFileHeader,sizeof(BITMAPFILEHEADER);file.Read(&m_bmInfoHeader,sizeof(BITMAPINFOHEADER);int szPalette = 0;if (m_bmInfoHeader.biBitCount != 24)file.Close();MessageBox("請選擇真彩色位圖!","提示&

12、quot;);return;if (m_bmInfoHeader.biSizeImage = 0)int externWidth;/計算源位圖每行使用的字節(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);int nBmpD

13、ata = m_bmInfoHeader.biSizeImage;if (m_pBmpData != NULL)delete m_pBmpData;m_pBmpData = NULL;m_pBmpData = new BYTEnBmpData;file.ReadHuge(m_pBmpData,nBmpData);file.Close();int sizeofbuffer = m_bmInfoHeader.biWidth * m_bmInfoHeader.biHeight * 4;int externWidth;externWidth = m_bmInfoHeader.biWidth * 3;i

14、f(externWidth % 4 != 0)externWidth = 4 - externWidth % 4;elseexternWidth = 0;int k = 0;BYTE* m_pImageTempBuffer = new BYTEsizeofbuffer;for (int n = m_bmInfoHeader.biHeight - 1; n >= 0; n-) for (UINT m = 0; m < m_bmInfoHeader.biWidth * 3; m += 3) m_pImageTempBufferk = m_pBmpDatan*(m_bmInfoHeade

15、r.biWidth*3+externWidth)+m;/bluem_pImageTempBufferk+1 = m_pBmpDatan*(m_bmInfoHeader.biWidth*3+externWidth)+m+1;/greenm_pImageTempBufferk+2 = m_pBmpDatan*(m_bmInfoHeader.biWidth*3+externWidth)+m+2;/redm_pImageTempBufferk+3 = 255;k += 4;delete m_pBmpData;m_pBmpData = new BYTEsizeofbuffer;memcpy(m_pBmp

16、Data, m_pImageTempBuffer, sizeofbuffer);delete m_pImageTempBuffer;/設置滾動范圍CRect bmpRC,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,b

17、mpRC.Height()-wndRC.Height();m_ImagePanel.SetScrollRange(SB_HORZ,0,bmpRC.Width()-wndRC.Width();5.向對話框中添加RotateBmp方法,按指定的角度旋轉。6.向對話框中添加RotationImage方法,并調用RotateBmp方法處理圖像。7.處理旋轉按鈕事件void CImageRota:OnBtRotate() / TODO: Add your control notification handler code hereif (m_bLoaded)/確定旋轉方式CButton* pButton

18、 = (CButton*)GetDlgItem(IDC_FIXDEGREE);int nState = 0;int nDegree = 0;if (pButton != NULL)nState = pButton->GetCheck();if (nState)/預定角度for (int nID = IDC_ROTATE45; nID <= IDC_ROTATE270; nID+)pButton = (CButton*)GetDlgItem(nID);if (pButton != NULL)nState = pButton->GetCheck();if (nState)CStr

19、ing csText;pButton->GetWindowText(csText);int nPos = csText.Find("°");nDegree = atoi(csText.Left(nPos);break;else/固定角度UpdateData(FALSE);nDegree = m_nDegree;/確定旋轉角度RotationImage(&m_bmInfoHeader,nDegree);BYTE byByteAlign ;/位圖行字節(jié)對齊UINT outHeight = m_bmInfoHeader.biHeight;UINT outW

20、idth = m_bmInfoHeader.biWidth;BYTE* pBmpData = new BYTE 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);elsebyByteAlign = 0;BYTE byZeroData = 0;BYTE* pTmpDat

21、a = pBmpData;for (int y=0 ;y<outHeight;y+)for (int x=0;x<outWidth;x+)memcpy(pTmpData,pListData,3);pTmpData += 3;pListData += 4;for (int i=0; i<byByteAlign; i+)memcpy(pTmpData,&byZeroData,1);pTmpData =pTmpData + 1;pListData -= 2L*outWidth*4;CDC *pDC = m_Image.GetDC();BITMAPINFO bInfo;bIn

22、fo.bmiHeader = m_bmInfoHeader;HBITMAP hBmp = m_Image.SetBitmap(CreateDIBitmap(pDC->m_hDC,&m_bmInfoHeader,CBM_INIT,pBmpData,&bInfo,DIB_RGB_COLORS);if (hBmp != NULL):DeleteObject(hBmp);delete pBmpData;/設置滾動范圍CRect bmpRC,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

溫馨提示

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

評論

0/150

提交評論