gpt4 book ai didi

c# - 如何直接定义一个 8 位灰度图像?

转载 作者:太空狗 更新时间:2023-10-29 22:33:49 27 4
gpt4 key购买 nike

以下代码用于创建8位位图

Bitmap b = new Bitmap(columns, rows, PixelFormat.Format8bppIndexed);
BitmapData bmd = b.LockBits(new Rectangle(0, 0, columns, rows), ImageLockMode.ReadWrite, b.PixelFormat);

但是当我保存它时,它被保存为 8 位彩色位图。是否可以直接创建 8 位灰度位图,而无需创建 8 位彩色位图,然后再将其转换为灰度?

最佳答案

我刚刚遇到这个问题并在this的帮助下解决了它.

但我会把我的快速解决方案放在这里,希望对你有帮助。
BITMAP 文件包含四个部分,一个是调色板,它决定了颜色应该如何显示。所以在这里我们修改位图文件的调色板:

myBMP = new Bitmap(_xSize, _ySize, _xSize, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, _pImage);
//_pImage is the pointer for our image
//Change palatte of 8bit indexed BITMAP. Make r(i)=g(i)=b(i)
ColorPalette _palette = myBMP.Palette;
Color[] _entries = _palette.Entries;
for (int i = 0; i < 256; i++)
{
Color b = new Color();
b = Color.FromArgb((byte)i, (byte)i, (byte)i);
_entries[i] = b;
}
myBMP.Palette = _palette;
return myBMP;

关于c# - 如何直接定义一个 8 位灰度图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8603596/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com