to 涛涛
lpbuff是24bit彩色图的数据指针,3个字节对应1个象素,通过red*0.299+green*0.587+blue*0.114得到灰度再存到lpbuffgray1(灰度图象数据指针),这样做不对吗?unsigned int和int都是16bit,只是数据范围不一样,对于0——255之间的数好像没有区别吧?
#include <stdio.h>
struct color
{
char blue;
char green;
char red;
char reserved;
}rgb[256];
struct map
{
char type1;
char type2;
long size;
long resrved;
long offset;
long sizestruct;
long width;
long heith;
int planes;
int bitcount;
long compression;
long sizeimage;
long xpelspermeter;
long ypelspermeter;
long clrused;
long clrimportant;
}bmphead={'B','M',65536+1078,0,1078,40,256,256,1,8,0,256*256,0,0,256,0 };
create()
{
FILE *fp;
if((fp=fopen("qwj.bmp","wb+"))==NULL)
{printf("can't open file\n");
return; }
if(fwrite(&bmphead,sizeof(struct map),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}