将一张bmp图片,修改成德国国旗
int main()
{
FILE *fp = fopen("./gaoda.bmp","r");
int bmp_size = 0;// bmp图片格式大小
int width = 0; //图片宽度
int height = 0; //图片高度
//先定义一下德国国旗的颜色
unsigned char blakc[3] = {0,0,0};
unsigned char red[3] = {0,0,255};
unsigned char yellow[3] = {0,255,255};
fp = fopen("./gaoda.bmp","r+");//重新打开图片
fseek(fp,54,SEEK_SET);//跳过文件头
/计算三个颜色的高度
int black_height = height/3;//黑色的高度是图片高度除以三,直接分成三份
int red_height = black_height;//
int yellow_height = height -2*black_height;//原本的高度-红色跟黑色之后 就是黄色的部分
//填充颜色
for(int i=0;i<black_height;i++)
{
for(int j=0;j<width;j++)
{
fwrite(yellow,3,1,fp); //循环填充黄色部分
}
}
for(int i=black_height;i<black_height+red_height;i++)
{
for(int j=0;j<width;j++)
{
fwrite(red,3,1,fp);//循环填充红色部分
}
}
for(int i=black_height+red_height;i<height;i++)
{
for(int j=0;j<width;j++)
{
fwrite(blakc,3,1,fp);//循环填充黑色部分
}
}//由于像素的存储顺序问题,像素通常是从文件底部开始存储,所以跟换了一下填充颜色的循序
fclose(fp);
return 0;
}