- 话不多说,直接上代码
- 全彩转灰度公式和灰度转伪彩色对应关系均可在代码里找到,有详细注释
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#pragma pack(1)
typedef struct tagBITMAPFILEHEADER
{
unsigned short bfType;
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
}fileHeader;
#pragma pack()
#pragma pack(1)
typedef struct tagBITMAPINFOHEADER
{
unsigned long biSize;
long biWidth;
long biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned long biCompression;
unsigned long biSizeImage;
long biXPixPerMeter;
long biYPixPerMeter;
unsigned long biClrUsed;
unsigned long biClrImporant;
}fileInfo;
#pragma pack()
#pragma pack(1)
typedef struct tagRGBQUAD
{
unsigned char rgbBlue;
unsigned char rgbGreen;
unsigned char rgbRed;
unsigned char rgbReserved;
}rgbq;
#pragma pack()
typedef struct OtherData
{
unsigned char extradata;
struct OtherData *next;
}OtherData;
int colorToGray(FILE* fp1,FILE* fp2)
{
fileHeader * fh;
fileInfo * fi;
fh = (fileHeader *)malloc(sizeof(fileHeader));
fi = (fileInfo *)malloc(sizeof(fileInfo));
fread(fh, sizeof(fileHeader), 1, fp1);
fread(fi, sizeof(fileInfo), 1, fp1);