将一张bmp图片修改为德国国旗
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>int main(int argc, const char *argv[])
{
FILE *fp = fopen("./blue.bmp","r+");
int size_bmp = 0;
int weigh = 0;
int high = 0;
fseek(fp,2,SEEK_SET);
fread(&size_bmp,4,1,fp);
printf("图片大小为:%d\n",size_bmp);fseek(fp,18,SEEK_SET);
fread(&weigh,4,1,fp);
fread(&high,4,1,fp);
printf("图片宽为%d\n",weigh);
printf("图片高为%d\n",high);unsigned char crr[3] = {0,0,0};
unsigned char brr[3] = {0,0,255};
unsigned char arr[3] = {0,255,255};
fseek(fp,54,SEEK_SET);
for(int i=0;i<high/3;i++)
{
for(int j=0;j<weigh;j++)
{
fwrite(arr,3,1,fp);
}
}
for(int i=high/3;i<2*high/3;i++)
{
for(int j=0;j<weigh;j++)
{
fwrite(brr,3,1,fp);
}
}
for(int i=2*high/3;i<high;i++)
{
for(int j=0;j<weigh;j++)
{
fwrite(crr,3,1,fp);
}
}
fclose(fp);return 0;
}