#include #include 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; }