软件设计课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

1. 前言 (3)

2. 对项目任务的理解与分析 (3)

2.1 BMP文件格式简介 (3)

2.2 BMP图像信息的获取 (6)

3. 基本思路 (6)

3.1本项目要完成的主要内容 (7)

3.2 主要算法函数说明 (7)

3.3 模块划分 (8)

4. 个人计划安排 (9)

5. 参考资料 (10)

一.前言

之所以选这个题目,是因为看到老师演示已经编写好了的图像显示程序,感觉具有很炫的视觉效果,出于好奇,想要知道那些图片效果到底是怎么实现的,于是便选择了这一项目。但现实终归是现实,我对此一点头绪都没有,有太多的不懂,几乎是一头雾水,需要了解一些基本问题。如BMP的文件格式,获取图像的基本信息的方法,以及C语言中一些库函数(fseek、fclose等)。随后,便开始了我的探讨之旅,查资料,并有了些简单的了解。同时也制定了学习计划。

二. 对项目任务的理解与分析

2.1 BMP文件格式简介

BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。Wi ndows 3.0以后的BMP图象文件与显示设备无关,因此把这种BMP图象文件格式称为设备无关位图DIB(device-independent bitmap)格式(注:Windows 3.0以后,在系统中仍然存在DDB位图,象BitBlt()这种函数就是基于DDB位图的,只不过如果你想将图像以BMP格式保存到磁盘文件中时,微软极力推荐你以DIB格式保存),目的是为了让Windows能够在任何类型的显示设备上显示所存储的图象。BMP位图文件默认的文件扩展名是BMP或者bmp(有时它也会以.DIB或.RLE作扩展名)。Bmp文件是非常常用的位图文件,无论是游戏还是其他都被广泛使用。

一般BMP文件可以看成由4个部分组成:BMP文件头(bitmap-file header)、BMP 信息头(bitmap-information header)、彩色表(调色板)(color table)和定义BMP位图数据。

1:位图头文件数据结构,它包含BMP图像文件的类型、显示内容等信息;

2:位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息;

3:调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的BMP)就不需要调色板;

4:位图数据,这部分的内容根据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而其他的小于24位的使用调色板中颜色索引值。

2.1.1 BMP文件头

位图文件头(bmp file header):提供文件的类型、大小、存放位置等信息。其结构定义如下:

typedef struct tagBITMAPFILEHEADER

{

WORD bfType; // 位图文件的类型,必须为BM(0-1字节)

DWORD bfSize; // 位图文件的大小,以字节为单位(2-5字节)

WORD bfReserved1; // 位图文件保留字,必须为0(6-7字节)

WORD bfReserved2; // 位图文件保留字,必须为0(8-9字节)

DWORD bfOffBits; // 位图数据的起始位置,以相对于位图(10-13字节)

// 文件头的偏移量表示,以字节为单位

} BITMAPFILEHEADER;

2.1.2 BMP信息头

位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息。

2.1.3颜色表(调色板) (optional)

调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应映射表,标识颜色索引号与其代表的颜色的对应关系。它在文件中的布局就像一个二维数palette[N][4],其中N表示总的颜色索引数,每行的四个元素分别表示该索引对应的B、G、R和Alpha的值,每个分量占一个字节。如不设透明通道时,Alpha为0。索

引号就是所在行的行号,对应的颜色就是所在行的四个元素。单色、4位色、8位色、16位色需要调色板,24位色、32位色不需要调色板。

2.1.4定义BMP位图数据

位图数据(bitmap data):就是图像数据,该域的大小取决于压缩方法及图像的尺寸和图像的位深度,它包含所有的位图数据字节,这些数据可能是彩色调色板的索引号,也可能是实际的RGB值,这将根据图像信息头中的位深度值来决定。由于位图信息头中的图像高度是正数,所以位图数据在文件中的排列顺序是从左下角到右上角,以行为主序排列的。也即我们见到的第一个像素是图像最左下角的数据,第二个像素为图像最后一行第二列的数据,…一直到最后一行的最后一列数据,后面紧接的是倒数第二行的第一列的数据,依此类推。

如果图像是24位或是32位数据的位图的话,位图数据区就不是索引而是实际的像素值了。下面说明一下,此时位图数据区的每个像素的RGB颜色阵列排布:24位RGB

按照BGR的顺序来存储每个像素的各颜色通道的值,一个像素的所有颜色分量值都存完后才存下一个下一个像素,不进行交织存储。32位数据按照BGRA的顺序存储,其余与24位位图的方式一样。像素的排布规则与前述一致。

对齐规则:Windows默认的扫描的最小单位是4字节,如果数据对齐满足这个值的话对于数据的获取速度等都是有很大的增益的。因此,BMP图像顺应了这个要求,要求每行的数据的长度必须是4的倍数,如果不够需要进行比特填充(以0填充),这样可以达到按行的快速存取。这时,位图数据区的大小就未必是图片宽×每像素字节数×图片高能表示的了,因为每行可能还需要进行比特填充。

2.2 BMP图像信息的获取

1)fopen打开BMP文件。

2)fread读取文件的数据,读取的前14个字节是文件头,接着的40字节是信息头,然后是调色板和位图。

3)fclose关闭文件。

相关文档
最新文档