CSmooth::Gaosi(CDib& ProceDib)
{
BYTE* pBitmapData = ProceDib.GetData();
int height=ProceDib.GetHeight();//以像素为单位
int width=ProceDib.GetWidth();//以像素为单位
int lineByte = (width * 23 +31) / 32 * 4; //每行像素所占字节数
//int lineByte=ProceDib.GetDibWidthBytes();//读取行像素的存储宽度
double sum;
for(int i = 1; i < height +1; i++ )
{
for(int j = 1; j < width +1; j++ )
{
sum = 0; //清零
sum += (double)(*(pBitmapData + (i-1) * lineByte + j*3 - 1)) * tem[0]; //该点左下角
sum += (double)(*(pBitmapData + (i-1) * lineByte + j*3)) * tem[1]; //下
sum += (double)(*(pBitmapData + (i-1) * lineByte + j*3 + 1)) * tem[2]; //右下
sum += (double)(*(pBitmapData + i * lineByte + j*3 - 1)) * tem[3]; //左
sum += (double)(*(pBitmapData + i * lineByte + j*3)) * tem[4]; //该点位置
sum += (double)(*(pBitmapData + i * lineByte + j*3 + 1)) * tem[5]; //右
sum += (double)(*(pBitmapData + (i+1) * lineByte + j*3 - 1)) * tem[6]; //左上
sum += (double)(*(pBitmapData + (i+1) * lineByte + j*3)) * tem[7]; //上
sum += (double)(*(pBitmapData + (i+1) * lineByte + j*3 + 1)) * tem[8]; //右上
*(pBitmapData + i * lineByte + j*3) = (unsigned char)(sum / 16.0);
}
}
return true;
}
{
BYTE* pBitmapData = ProceDib.GetData();
int height=ProceDib.GetHeight();//以像素为单位
int width=ProceDib.GetWidth();//以像素为单位
int lineByte = (width * 23 +31) / 32 * 4; //每行像素所占字节数
//int lineByte=ProceDib.GetDibWidthBytes();//读取行像素的存储宽度
double sum;
for(int i = 1; i < height +1; i++ )
{
for(int j = 1; j < width +1; j++ )
{
sum = 0; //清零
sum += (double)(*(pBitmapData + (i-1) * lineByte + j*3 - 1)) * tem[0]; //该点左下角
sum += (double)(*(pBitmapData + (i-1) * lineByte + j*3)) * tem[1]; //下
sum += (double)(*(pBitmapData + (i-1) * lineByte + j*3 + 1)) * tem[2]; //右下
sum += (double)(*(pBitmapData + i * lineByte + j*3 - 1)) * tem[3]; //左
sum += (double)(*(pBitmapData + i * lineByte + j*3)) * tem[4]; //该点位置
sum += (double)(*(pBitmapData + i * lineByte + j*3 + 1)) * tem[5]; //右
sum += (double)(*(pBitmapData + (i+1) * lineByte + j*3 - 1)) * tem[6]; //左上
sum += (double)(*(pBitmapData + (i+1) * lineByte + j*3)) * tem[7]; //上
sum += (double)(*(pBitmapData + (i+1) * lineByte + j*3 + 1)) * tem[8]; //右上
*(pBitmapData + i * lineByte + j*3) = (unsigned char)(sum / 16.0);
}
}
return true;
}