For every pixel in bmp, I tried to change its blue, green, and red color though some sort of calculation. But it gave me an image that's entirely black.
The following is part of my code in main():
fseek(bmpfile, offset, SEEK_SET);
for(int i = 0; i < height; i++){ //loop for every row
for(int j = 0; j < width; j++){ //loop for every pixel in every row
Pixel p; //Pixel is a construct that has 3 char fields of b, g, r.
fread(&p, sizeof(p), 1, file);
if(strcmp(argv[1], "-g") == 0){
float b1 = p.b/255;
float g1 = p.g/255;
float r1 = p.r/255;
float gr = 0.2 * r1 + 0.7 * g1 + 0.07* b1;
if (gr <= 0.003){
gr = 13*gr;
}else{
gr = (1.1*pow(gr,1/2.4)-1);
}
p.b = (char)(gr*255);
p.g = (char)(gr*255);
p.r = (char)(gr*255);
}
fseek(bmpfile, -(sizeof(p)), SEEK_CUR);
fwrite(&p, sizeof(p), 1, bmpfile);
}
fseek (bmpfile, padding, SEEK_CUR);