上一篇介绍过了位图的基本概念,相信大家对bmp格式的图片存储结构已经了解了,下面就以一个win32控制台程序来实现真彩图(也就是24位位图)转为为256级灰度图,这在图像处理上非常重要。
为什么用控制台程序而不是MFC等窗口程序呢,是因为这程序更能说明算法实现的过程,而不拘泥于MFC的框架下。
程序如下:(注释很好,不用过多解释)
#include <stdio.h>
#include <windows.h>
#define WIDTHBYTES(i) ( ( (i+31)/32 )*4) //使每一行的宽度是4个字节的倍数
#define IMAGETYPE 0x4d42 //表示字符BM
int main(int argc,char* argv)
{
BITMAPFILEHEADER bmpfileheader; //文件头
BITMAPINFOHEADER bmpinfoheader; //信息头
unsigned char *matrix; //像素矩阵,用unsigned char是因为它的范围刚好为0—255
FILE *finput; //读