#include<stdio.h> #include<windows.h> typedef struct { BYTE b; BYTE g; BYTE r; }RGB; int main(void) { BITMAPFILEHEADER fileHeader; BITMAPINFOHEADER infoHeader; FILE*pfin=fopen("F:\timg.bmp","rb"); FILE*pfout=fopen("F:\tidus2.bmp","wb"); //ReadtheBitmapfileheader; fread(&fileHeader,sizeof(BITMAPFILEHEADER),1,pfin); //ReadtheBitmapinfoheader; fread(&infoHeader,sizeof(BITMAPINFOHEADER),1,pfin); //为简化代码,只处理24位彩色 if(infoHeader.biBitCount==24) { int size=infoHeader.biWidth*infoHeader.biHeight; RGB img[570][400]; //这两个值就是上边的infoHeader.biWidth和infoHeader.biHeight fread(img,sizeof(RGB),size,pfin); //把第50行染成黑色 int i=0; for(;i<infoHeader.biWidth;i++) { img[50][i].b=img[50][i].g=img[50][i].r=0; } //将修改后的图片保存到文件 fwrite(&fileHeader,sizeof(fileHeader),1,pfout); fwrite(&infoHeader,sizeof(infoHeader),1,pfout); fwrite(img,sizeof(RGB),size,pfout); } fclose(pfin); fclose(pfout); }
效果: