void main() { //读入指定BMP文件进内存 char readPath[]="dog.BMP"; readBmp(readPath); //输出图像的信息 printf("width=%d,height=%d,biBitCount=%d\n", bmpWidth,bmpHeight,biBitCount); //循环变量,图像的坐标 int i,j; //每行字节数 int lineByte=(bmpWidth*biBitCount/8+3)/4*4;
//循环变量,针对彩色图像,遍历每像素的三个分量 int k; //将图像左下角1/4部分置成黑色 if(biBitCount==8){//对于灰度图像 for(i=0;i<bmpHeight/2;i++){ for(j=0;j<bmpWidth/2;j++){ *(pBmpBuf+i*lineByte+j)=0; } } } else if(biBitCount==24){//彩色图像 for(i=0;i<bmpHeight/2;i++){ for(j=0;j<bmpWidth/2;j++){ for(k=0;k<3;k++)//每像素RGB三个分量分别置0才变成黑色 *(pBmpBuf+i*lineByte+j*3+k)=0; } } } //将图像数据存盘 char writePath[]="dogcpy.BMP"; saveBmp(writePath, pBmpBuf, bmpWidth, bmpHeight, biBitCount, pColorTable); //清除缓冲区,pBmpBuf和pColorTable是全局变量, 在文件读入时申请的空间 delete []pBmpBuf; if(biBitCount==8) delete []pColorTable; } |