【发布时间】:2021-03-30 03:08:56
【问题描述】:
我正在尝试编写一个更改 BMP 文件并在特定位置添加一些修改的程序。我要修改的 BMP 是单色的(每像素 1 位),因为图像尺寸需要非常小。我正在使用 ATL CImage 类来执行此操作。
但是,我似乎无法使用 SetPixel 更改单色 BMP 的特定像素。
(为简单起见,我稍微修改了这段代码。“颜色”来自程序的另一部分,只返回 RGB(255,255,255) 或 RGB(0,0,0))
CImage bmp;
bmp.Create(180, 1369, 1);
for (int y = 0; y < 1369; y++)
{
for (int x = 0; x < 180; x++) {
bmp.SetPixel(x, y, color);
}
}
此代码在显示时返回黑色 BMP。如果我将 bmp.Create 中的“1”(即每像素的位数)修改为大于 8 的任何值,则代码将按预期工作。但是,该修复不适合我,因为我最终得到的 BMP 太大。
有什么方法可以让 SetPixel 在这里工作吗?
【问题讨论】:
-
也许
color需要是0或1? -
我已经尝试过(可能应该提到它!)。我将“颜色”更改为 1,以查看它是否至少会输出白色 BMP。它仍然输出黑色。我也尝试了 0 以防 1 是黑色而 0 是白色,但不行。
-
如果你创建一个白色单色位图并打开它并执行 GetPixel(0,0) 你会得到什么值?