19,468
社区成员
发帖
与我相关
我的任务
分享
//其实这两张图片是用同一段代码对同样大小的矩形截的图
//所以除了图像数据不一致外,其他数据应该是一致的
//不同的颜色用蓝色填充,做个标记
int i, j;
int line = (width1 * 3 + 3) / 4 * 4;
for(j = 0; j < height1; ++j)
{
for(i = 0; i < width1; ++i)
{
if(!(*(pData1 + line * j + 3 * i) == *(pData2 + line * j + 3 * i) &&
*(pData1 + line * j + 3 * i + 1) == *(pData2 + line * j + 3 * i + 1) &&
*(pData1 + line * j + 3 * i + 2) == *(pData2 + line * j + 3 * i + 2)))
{
*(pData1 + line * j + 3 * i) = 0;
*(pData1 + line * j + 3 * i) = 0;
*(pData1 + line * j + 3 * i) = 255;
}
}
}
//打开一位图
CFile file;
CFileException fe;
//打开文件
if(!file.Open("A.bmp", CFile::modeRead, &fe))
return ;
file.Read(&bmpFileHead1, sizeof(BITMAPFILEHEADER));
file.Read(&bmpInfoHead1, sizeof(BITMAPINFOHEADER));
width1 = bmpInfoHead1.biWidth;
height1 = bmpInfoHead1.biHeight;
BitSize1 = bmpFileHead1.bfSize - bmpFileHead1.bfOffBits;
pData1 = (BYTE*)new char[BitSize1];
file.Read(pData1, BitSize1);
file.Close();
int i, j;
int line = (width1 * 3 + 3) / 4 * 4;
//注意看这里i的取值范围///////////////////////////////
for(i = 0; i < height1 * 1.325; ++i)
{
for(j = 0; j < width1; ++j)
{
if(!(*(pData1 + line * i + 3 * j) == *(pData2 + line * i + 3 * j) &&
*(pData1 + line * i + 3 * j + 1) == *(pData2 + line * i + 3 * j + 1) &&
*(pData1 + line * i + 3 * j + 2) == *(pData2 + line * i + 3 * j + 2)))
{
*(pData1 + line * i + 3 * j) = 0;
*(pData1 + line * i + 3 * j + 1) = 0;
*(pData1 + line * i + 3 * j + 2) = 255;
}
}
}
*(pData1 + line * j + 3 * i) = 0;
*(pData1 + line * j + 3 * i + 1) = 0;
*(pData1 + line * j + 3 * i + 2) = 255;