作业要求:将24位或32位真彩色 .bmp 图像文件,顺时针旋转90度。 可执行程序名:rotatebmp 用法:rotatebmp src.bmp dest.bmp (文件名可变) 生成的dest.bmp是从src.bmp 顺时针旋转90度得到的。 注意事项:C++编译有“结构边界对齐”的概念: struct A { int a; char c; }; 那么 sizeof(A)未必是5,很有可能是8,因为 C++编译器为了提高代码执行效率,往往在生成结构变量的时候,自动将其大小调整为 4的整数倍,或8的整数倍。程序员可以在编译选项中指定对齐的方式是1字节,2字节,4字节或8字节(即每个结构变量的大小一定是1的倍数,2的倍数,4的倍数,8的倍数),也可以在程序开头直接用: #pragma pack(2) 指定对齐边界是2字节,或1字节,4字节„. 参考阅读: BMP图像文件格式 1 BMP是bitmap的缩写形式,bitmap顾名思义,就是位图也即 Windows位图。它一般由 4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区组成。在系统中以 BMP为扩展名保存。 打开 Windows的画图程序,在保存图像时,可以看到三个选项:2色位图(黑白)、16色位图、256色位图和 24位位图。这是最普通的生成位图的工具,在这里讲解的BMP位图形式,主要就是指用画图生成的位图(当然,也可以用其它工具软件生成)。 现在讲解 BMP的4个组成部分: 1.文件头信息块 0000-0001:文件标识,为字母 ASCII码“BM”。 0002-0005:文件大小。 0006-0009:保留,每字节以“00”填写。 000A-000D: 记 录 图 像 数 据 区 的 起 始 位 置 。 各 字 节 的 信 息 依 次 含 义 为 : 文 件 头 信息 块 大 小 , 图 像 描 述 信 息 块 的 大 小 , 图 像 颜 色 表 的 大 小 , 保 留 ( 为 01) 。 2.图 像 描 述 信 息 块 000E-0011: 图 像 描 述 信 息 块 的 大 小 , 常 为 28H。 0012-0015: 图 像 宽 度 。 0016-0019: 图 像 高 度 。 001A-001B: 图 像 的 plane总 数 ( 恒 为 1) 。 001C-001D: 记 录 像 素 的 位 数 , 很 重 要 的 数 值 , 图 像 的 颜 色 数 由 该 值 决 定 。 001E-0021: 数 据 压 缩 方 式 ( 数 值 位 0: 不 压 缩 ; 1: 8位 压 缩 ; 2: 4位 压 缩 ) 。 0022-0025: 图 像 区 数 据 的 大 ...