#include <stdio.h>
#include <stdlib.h>

unsigned char Header[54]={
0x42,0x4D,0x36,0x3B,0x04,0x00,0x00,0x00,
0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,
0x00,0x00,0x30,0x01,0x00,0x00,0x30,0x01,
0x00,0x00,0x01,0x00,0x18,0x00,0x00,0x00,
0x00,0x00,0x00,0x3B,0x04,0x00,0xCE,0x0E,
0x00,0x00,0xD8,0x0E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char dummyHeader[54];

double Work[304][304];
unsigned char WriteBuf[3*304];

#define B 0
#define G 1
#define R 2


main()
{
	int x,y;
	FILE *fp=fopen("old.bmp","rb");
	fread(dummyHeader,1,sizeof(dummyHeader),fp);
	for(y=0;y<304;y++) {
		fread(WriteBuf,1,sizeof(WriteBuf),fp);
		for(x=0;x<304;x++) {
			Work[y][x]=((double)WriteBuf[x*3+B])/255.0/8.0+0.5-1.0/8.0+0.2;
		}
	}
	fclose(fp);
	for(y=0;y<304;y++) {
		for(x=0;x<304;x++) {
			Work[y][x]+=(double)rand()/32767.0*0.4-0.2;
		}
	}

	fp=fopen("new.bmp","wb");
	fwrite(Header,1,sizeof(Header),fp);
	for(y=0;y<304;y++) {
		for(x=0;x<304;x++) {
			int w;
			w=(int)(Work[y][x]*255.0);
			WriteBuf[x*3+B]=w;
			WriteBuf[x*3+G]=w;
			WriteBuf[x*3+R]=w;
		}
		fwrite(WriteBuf,1,sizeof(WriteBuf),fp);
	}
	fclose(fp);
	return 0;
}
