软件课程设计-C语言实现BMP图像显示

软件课程设计-C语言实现BMP图像显示

ID:43733369

大小:936.08 KB

页数:30页

时间:2019-10-13

软件课程设计-C语言实现BMP图像显示_第1页
软件课程设计-C语言实现BMP图像显示_第2页
软件课程设计-C语言实现BMP图像显示_第3页
软件课程设计-C语言实现BMP图像显示_第4页
软件课程设计-C语言实现BMP图像显示_第5页
资源描述:

《软件课程设计-C语言实现BMP图像显示》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、XX大学XX系课程设计报告(最终报告)(2010-2011年度第2学期)名称:软件课程设计题目:BMP图象分析与显示院系:—班级:—学号:—学生姓名:_指导教师:_设计周数:15成绩:日期:2011年5月31日1・设计任务12.基本思路23.方案设计23.1主要算法说明23.2程序框架设计92.程序的部分源代码分析及介绍145•调试过程中出现的问题及相应解决办法186.个人体会及建议267.参考文献271.设计任务1.1利用C语言实现BMP格式图象文件的分析和显示。主要内容包括:a)基本任务:完成BMP格

2、式图像的显示,要求在提供的画布上循环的显示某一文件夹下面所有的BMP文件(支持所有BMP格式);b)拓展任务:实现图像的特效显示(淡入淡出,百页窗等等)。1.2进度情况:A、我对BMP图像的了解BMP文件是标准的Windows位图文件,有16色、256色、16位真彩色及24位真彩色等格式。客观存在按文件头、图像控制信息、彩色表和位图点阵数据的格式来存储。文件头是定义图像文件的类型、长度等的数据结构:图像控制信息是定义图像颜色格式、图像大小、颜色数等的数据结构:彩色表是定义图像颜色的调色板的数组位图点阵,是

3、定义图像数据的数组。未经压缩的BMP文件屮,位图点阵信息是按扫描线从卜•至上(bottomtotop)存储的,即图像的第一个像素值在位图阵列的左下角,最后一个像素值在位图阵列的右上角。对16色位图,每个像素占4位,每个字节存放相邻的两个像素值,高4位存放的第1个像素值在扫描线的前面,低4位存放的第2个像素值在扫描线后而。对256色位图,1个字节存放1个像素值。对24位位图,颜色表为空,位图数据的每3个字节对应1个像素值,其中每个字节分别对应该像素值的P、R、G值。B、我对于BMP图像显示平台的理解1、通过

4、enum{}来对各个按键(向上,向下,向左右等)作出定义2、定义结构体T.Message,用于接收和发出信号,来控制各个函数的进度。3、创建消息队列,用于控制各个程序的进度(即决定什么时候开始或者结束它的进程)4、定义结构体变量T_MessageRecvMsg,用于接收从队列中发岀的消息。5、利用函数DTOS_DRV_ReceiveMessage(Test_queueID,&RecvMsg),根据其中RecvMsg.paramO的数值来决定是否进行这个进度。若RecvMsg.paramO等于MSG_Key

5、RIGHT,则进行图像显示程序,获取图像名称,调用图像显不函数,对图像进行分析和显示;否则跳出循环。C、已能够正确显示32bit,24bit,lbit,4bit(未压缩),8bit(未压缩),4bit(压缩),8bit(压缩),16bit(1555模式,565模式,4444模式)的图像。1.基本思路通过查阅资料和自己的思考,猜想,我觉得要实现在画布上显示BMP图像,主要有以下儿种方法I最初的想法是可以利用描点函数GFMSetPixels,逐个显示出BMP图像的点,最终构成一幅完整的图像。具体编码后,证实这

6、是可行的。II查阅一些资料后,我了解到还可以利用粘贴函数GFMWriteRectangleo即将图像文件中的数据读取出来,用malloc动态分配内存,记录图像数据,然后将内存中数据拷贝到画布上的一个矩形框内,即实现了图像的显示。但是继续研究之后发现,这个方法涉及到将1,4,8,16,24bit图像数据修改为32bit的问题,比较复杂,所以最终还是采用了方案I。2.方案设计3」主要算法说明:主要方法:将不同像素的图像分别用不同的函数实现,即分别定义show1bit,show4bit,show32bit等几个

7、函数,再定义函数showbmp,按照需要显示的图像像素,决定调用相应的图像显示函数。这么做可以使结构比较清晰,增强代码的可读性。具体实现方法:I定义信息头结构变量(其中变量包含BMP图像的文件头和信息头:文件标识“BM”,文件大小,保留位,数据偏移,信息头长度,宽度,高度,面数,像素的位数,压缩类型,位图数据大小,水平分辨率,垂直分辨率,颜色数,重要颜色)II定义函数,读取文件头和信息头III定义各个像素BMP图像的显示函数i32bitBMP图像的显示函数⑴定义文件指针(2)用fopen打开图像文件⑶利用

8、fseek函数将文件内部指针移到位图数据区,跳过信息头部分⑷用fread函数将颜色信息读取出来,存放在INT32U型的变量color中⑸调用画点函数GFMSetPixels,把color中的颜色信息显示在画布上⑹利用双重循环,依次逐行读取颜色信息,显示在画布上⑺显示结束,用fclose关闭文件ii24bitBMP图像的显示函数由于24bit图像和32bit图像一样,都没用调色板,所以实现过程相似,但有一点不同:因为24bit的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。