给我一段代码,要求用Cimage加载一张位图bmpsrc,然后将其缩小为40*40,输出一张新位图CBitmap:bmpdest
时间: 2023-06-05 15:08:30 浏览: 114
CImage的一般使用方法和技巧
3星 · 编辑精心推荐
以下是使用Cimage加载一张位图bmpsrc,将其缩小为40*40,输出一张新位图CBitmap的代码:
```
// 声明CImage对象
CImage bmpsrc, bmpdest;
// 加载位图
bmpsrc.Load(_T("bmpsrc.bmp"));
// 获取位图的尺寸
int srcWidth = bmpsrc.GetWidth();
int srcHeight = bmpsrc.GetHeight();
// 计算缩小后位图的尺寸
int destWidth = 40;
int destHeight = 40;
// 创建新位图
bmpdest.Create(destWidth, destHeight, 24);
// 缩小位图
for (int i = 0; i < destHeight; i++) {
for (int j = 0; j < destWidth; j++) {
int rSum = 0, gSum = 0, bSum = 0;
for (int m = 0; m < srcHeight / destHeight; m++) {
for (int n = 0; n < srcWidth / destWidth; n++) {
COLORREF color = bmpsrc.GetPixel(j * (srcWidth / destWidth) + n, i * (srcHeight / destHeight) + m);
rSum += GetRValue(color);
gSum += GetGValue(color);
bSum += GetBValue(color);
}
}
// 取平均值
int count = (srcHeight / destHeight) * (srcWidth / destWidth);
BYTE r = rSum / count;
BYTE g = gSum / count;
BYTE b = bSum / count;
bmpdest.SetPixel(j, i, RGB(r, g, b));
}
}
// 输出新位图
bmpdest.Save(_T("bmpdest.bmp"), Gdiplus::ImageFormatBMP);
```
阅读全文