我试图将灰度位图像素转换为较低的灰度级,但我不知道用于计算它的公式的名称,也不知道它是如何工作的 - 现在我有一些看似不常见的阴影代码工作(几乎从不)正确。
图像的灰度级别从2到256不等,我需要一个公式才能轻松降级(并且像素数据的反向公式仍然在0到255之间)
非常感谢任何帮助。
以下是当前代码:
int xIndex = 0, yIndex = 0;
if (grayLevelPreview <= 0) return;//error- only one shade, dividing by zero calculation ahead - stop
if (grayLevelPreview > grayLevel) grayLevelPreview = grayLevel;
int levels = grayLevel / grayLevelPreview;
for (int i = 0; i < dataListPreview.Count; i++)//assign each pixel data to bitmap coordinates
{
dataListPreview[i] /= levels;
int grayLeveler = dataListPreview[i] * levels;
bm.SetPixel(xIndex, yIndex, Color.FromArgb(1, grayLeveler, grayLeveler, grayLeveler));
xIndex++;
if (i % imgWidth == 0 && i != 0)
{
yIndex++;
}
if (xIndex == imgWidth)
{
xIndex = 0;
}
}