版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
案卷号日期图像处理系统详细设计说明书作者:完成日期:2016.8。24签收人:签收日期:修改情况记录:版本号修改批准人修改人修改日期签收人1。0杨开2016。8.231.1杨开2016。8.24目录1弓I言TOC\o"1-5"\h\z1。1编写目的1\o"CurrentDocument"1。2背景1\o"CurrentDocument"1.3定义2\o"CurrentDocument"1.4参考资料22程序系统的结构错误!未定义书签。3系统登陆设计说明3。1主窗设计33.2图像旋转模块功能设土43。3图像缩放模块设计.错.误!未定.义书.签3.4图片水印效果模块设计.143。5照片版式处理模块设土143.6流程逻辑错误!未定义书签。4位图数据的存储形式5限制条件6测试计划1引言1.1编写目的本详细设计说明书主要目的是对图像管理系统的功能设计进行详尽的说明。本说明书主要写了图像管理系统功能模块的详细设计,为后来的开发提供依据与参考。详细设计说明书面向人员有:程序设计人员、数据库设计人员,质量检测人员。1。2背景a.项目名称:图像管理系统a.项目名称:图像管理系统1/16详细设计说明书b.本项目的任务提出者:西安软件服务外包学院开发者:YOUNGREGINGROUP团队1。3定义本系统属于开发小型的图像处理软件,主要用于实现图像的显示与批量转换操作。实现各种图像格式的显示。支持图像的单一转换与批量转换。实现位图的各种常规操作。1。4参考资料《C++程序设计》,谭浩强,清华大学出版社;《VisualC++项目开发案例全程实录》,梁水,李伟明著,清华大学出版社。2程序系统的结构图像处理模块主窗体—►退出系统打开位图批量转换与处理PSD打开位图批量转换与处理PSD文件管理 照片处理位图图这®“图像〔管位t系J统”卧整体系构图水PP水图像像像像图PI图图印SS印转锐反旋浮转EF转转效DD效换化色转雕换G转换换果文文果成处处效成转换成为批件件批G理理果J换成GP量浏批量IP成位IN2/1处览量处FE位图FG=1理转理————G图——换详细设计说明书3系统整体及模块显示设计说明3。1主窗设计在这个系统里,主要实现用户登录进入系统后可以查询和添加相关信息.工作区菜单代码:m_wndToolBar。GetToolBarCtrl().SetImageList(&m_ImageList);m_wndToolBar。SetButtonText(0,"锐化处理”);m_wndToolBar.SetButtonText(1,”反色处理”);m_wndToolBar。SetButtonText(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,”水印批量处理");m_wndToolBar.SetButtonText(9,叩SD文件浏览");m_wndToolBar。SetButtonText(10,叩SD批量转换");m_wndToolBar。SetButtonText(11,”照片版式处理");设置状态栏,关联图标资源:UINTnID;〃控制状态栏里面的分栏m_wndStatusBar。SetPaneInfo(0,nID,SBPS_STRETCH|SBPS_NOBORDERS,1);〃返回值存nID中m_wndStatusBar.SetPaneText(0,”就绪");m_wndStatusBar.SetPaneInfo(1,nID,SBPS_NORMAL,1);m_wndStatusBar。SetPaneText(1,"大写");m_wndStatusBar。SetPaneInfo(2,nID,SBPS_POPOUT,1);m_wndStatusBar。SetPaneText(2,"数字");//加载图像资源/16详细设计说明书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图像旋转模块功能设计1。添加一个对话框类,类名为CImageRota。窗如下:2。向对话框中添加按钮、文本框、单选按钮、滑块、图片控件。设置主要控件属性,如下表所示:处理…事件:voidCImageRota:OnBtLoad(){//TODO:AddyourcontrolnotificationhandlercodehereCFileDialogflDlg(TRUE,"",”",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,”位图文件|*.bmp||”,this);if(flDlg.DoModal()==IDOK)(/16详细设计说明书CStringcsFileName=flDlg.GetPathN<niem_SrcFile=flDlg.GetPathNa)e;;m_BmpName.SetWindowText(csFileName);if(m_hBmp!=NULL){DeleteObjectm_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;fileOpen(csFileNameCFile:modeRead);file.Read(m_bmFileHeader,sizeofBITMAPFILEHEADER));file。Read(&m_bmInfoHeader,sizeof(BITMAPINFOHEADER));intszPalette=0;if(m—bmInfoHeadeibiBitCount!=24)/16详细设计说明书(file.Close()MessageBox(”请选择真彩色位图!”,提示”);return;}if(m_bmInfoHeader.biSizeImage==0){intexternWidth;/计算源位图每行使用的字节数externWidth=m_bmInfoHeader.biWidth;*3if(externWidth%4!=0externWidth=—externWidth%4;elseexternWidth=0;m_bmInfoHeader.biSizeImage=m_bmInfoHeadeibiHeight*(m_bmInfoHeader。biWidth*3+externWidth}intnBmpData=m_bmInfoHeader.biSizeImage;if(m_pBmpData!=NULL){delete[]m_pBmpData;m_pBmpData=NULL;/16详细设计说明书}m_pBmpData=newBYTE[nBmpData];file.ReadHug(m_pBmpData,nBmpData);fileClose();intsizeofbuffer=m_bmInfoHeader.biWidth*m_bmInfoHeaderbiHeight*4;intexternWidth;externWidth=m_bmInfoHeader.biWidth3;if(externWidtho4!=0)externWidth=4-externWidth4;elseexternWidth=0;intk=;0BYTE*m_pImageTempBuffer=newBYTE[sizeofbuffer;for(intn=m_bmInfoHeaderbiHeight-1n〉=0;—-){for(UINTm=0;m<m_bmInfoHeader.biWidth*3;m+=3)(m_pImageTempBuffer[k]=m_pBmpData[n*(m_bmInfoHeader。biWidth*3+externWidt)+m];//bluem_pImageTempBuffer[k+1]=/16详细设计说明书m_pBmpData[n*(m_bmInfoHeader。biWidth*3+externWidth)+m+1];//greenm_pImageTempBuffer[k+2]=m_pBmpData[n*(m-bmInfoHeader.biWidtlh3+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;/设置滚动范围CRectbmpRC,wndRC;m_ImagePanel.GetClientRect(wndRC)/获取面板的客户区域m_Image。GetClientRectbmpRC);/获取图片空间的客户区域m_ImagePanel.OnHScroll(SB_LEFT,1,NULL);m_ImagePanel.OnVScroll(SB_LEFT,1,NULL);m_ImagePanel.SetScrollRange(SB_VERT,0,bmpRC。Height0—wndRC.Height());/16详细设计说明书m_ImagePanel.SetScrollRange(SB_HORZ,0,bmpRC。Width()—wndRC。Width())}}向对话框中添加RotateBmp方法,按指定的角度旋转。向对话框中添加Rotationimage方法,并调用RotateBmp方法处理图像。处理旋转按钮事件voidCImageRota:OnBtRotate(){//TODO:Addyourcontrolnotificationhandlercodehereif(m—bLoaded)(/确定旋转方式CButton*pButton=(CButton*)GetDlgItem(IDC—FIXDEGREE);intnState=0intnDegree=0;if(pButton=NULL){nState=pButt—>GetCheck();/16详细设计说明书if(nState)/预定角度(for(intnID=IDC_ROTATE45;nID<=IDC_ROTATE27QnID++)(pButton=(CButton)GetDlgItem(nID)if(pButton!=NULL)(nState=pButt—n〉GetCheck();if(nState){CStringcsText;pButton〉GetWindowText(csText);intnPos=csText.Find");nDegree=atoi(csText.(eftos));break}}}}else/固定角度{1Q/16详细设计说明书UpdateData(FALSE);nDegree=m_nDegree;}/确定旋转角度RotationImage(&m_bmInfoHeader,nDegree);BYTEbyByteAlign;/位图行字节对齐UINToutHeight=m_bmInfoHeader.biHeight;UINToutWidth=m_bmInfoHeaderbiWidth;BYTE*pBmpData=newBYTE[m_bmInfoHeader.biSizeImage];memset(pBmpData,O,m_bmInfoHeader.biSizeImag)s;BYTE*pListData=m_pBmpData+((DWORD)outHeight—1)*outWidth*4;if(outWidth%4!=0)byByteAlign=4-(6utWidth*3L)%4);elsebyByteAlign=0;BYTEbyZeroData=0;BYTE*pTmpData=pBmpData;for(inty=0;y<outHeigh+){for(intx=0;XoutWidth;x++)/16详细设计说明书memcpy(pTmpData,pListData3);pTmpData+=3;pListData+=;4}for(inti=0i〈byByteAligni++)(memcpy(pTmpData,&byZeroData,1);pTmpData=pTmpData+1;}pListData-=2LoutWidth*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)(::DeleteObje(thBmp);/16详细设计说明书delete[]pBmpData;/设置滚动范围CRectbmpRC,wndRC;m_ImagePanel.GetClientRectwndRC);m_Image。GetClientRectbmpRC);m_ImagePanel.OnHScroll(SB_LEFT,1NULL);m_ImagePanel。OnVScroll(SB_LEFT,1,NULL);m_ImagePanel.SetScrollRan(eSB_VERT,0,bmpRC。Height)—wndRC.Height());m_ImagePanel.SetScrollRan(eSB_HORZ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理课件制作软件和使用技巧分享及经验
- 护理管理技巧与团队协作
- 护理工作中的法律法规知识
- 部编版二年级语文下册《羿射九日 第2课时》
- 护理规范操作培训
- 护理基本礼仪规范
- 护理基本护理教育学
- 炼钢厂长岗位职责与要求
- 基于核酸技术的物种鉴定研究
- 客户服务工程师日常工作流程与规范
- 2026年中考数学压轴题专项练习-海盗埋宝模型(学生版+名师详解版)
- 银行心理测试题目及答案
- 江苏镇江2019-2024年中考满分作文46篇
- 2024年课程设计混凝土结构电大
- 2025年高级(三级)中式烹调师(中式烹调)《理论知识》真题卷(答案和解析附后)
- 人工智能训练师培训课件
- 铝电解工(铝电解操作工)职业资格(技师)考试题库-上(单选题)
- 水电站大坝安全现场检查技术规程 -DL-T 2204
- 水产加工厂管理制度
- 重庆市制造业领域吸纳高校毕业生急需紧缺岗位目录(2024-2025)征
- 《食品安全监测与风险评估》课件
评论
0/150
提交评论