用fwrite、fread将一张随意图片修改成德国国旗
#include<myhead.h>
int main(int argc, char *argv[])
{
FILE* fd=fopen("./1.bmp","r");
fseek(fd,2,SEEK_SET);
int bmp_size=0;
fread(&bmp_size,4,1,fd);
printf("图片大小为:%d\n",bmp_size);
int bmp_w=0;
int bmp_h=0;
fseek(fd,18,SEEK_SET);
fread(&bmp_w,4,1,fd);
fread(&bmp_h,4,1,fd);
printf("图像像素信息为:%d*%d\n",bmp_w,bmp_h);
fclose(fd);
fd=fopen("./1.bmp","r+");
unsigned char black[3]={0,0,0};
unsigned char red[3]={0,0,255};
unsigned char yellow[3]={0,255,255};
fseek(fd,54,SEEK_SET);
for(int i=0;i<bmp_w;i++)
{
for(int j=0;j<bmp_h/3;j++)
{
fwrite(yellow,3,1,fd);
}
}
for(int i=0;i<bmp_w;i++)
{
for(int j=bmp_h/3;j<bmp_h/3*2;j++)
{
fwrite(red,3,1,fd);
}
}
for(int i=0;i<bmp_w;i++)
{
for(int j=bmp_h/3*2;j<bmp_h;j++)
{
fwrite(black,3,1,fd);
}
}
fclose(fd);
return 0;
}
效果