如何将调色板应用于位图

How to apply a palette to a bitmap

我正在自己制作dicom viewer

修改dicom图片颜色成功,但是是纯色

所以,为了解决单色部分,我带来了dicom调色板。 https://dicom.nema.org/dicom/2013/output/chtml/part06/chapter_B.html

但它以一种奇怪的方式进行,而不是我想象的方式。

想来想去,我发现位图的属性中有一个调色板。 但它根本不起作用。 搜索的结果,很多答案可能都不行,建议直接触摸像素数据。 我的调色板的长度始终为零。

Oncolor 红色版

dicom HeartIronSetVersion

最终目标

 for (int i = 0; i < bitmap2.Width; i++)
                {
                    for (int j = 0; j < bitmap2.Height; j++)
                    {
                        actualColor = bitmap2.GetPixel(i, j);

                        int a = actualColor.A;
                        int r = actualColor.R;


                        Color col = palette[r];
                        //IronHeartsetWith Alpha
                        //redBitmap.SetPixel(i, j, Color.FromArgb(a, palette[r]));
                        //IronHeartSet
                        //redBitmap.SetPixel(i, j, col);
                        //RedVer
                        redBitmap.SetPixel(i, j, Color.FromArgb(a, r, 0, 0));

                        //redBitmap.SetPixel(i, j, Color.FromArgb((int)r, 1, 0, 0));

                    }


                }
               

我以为在 diom 中有应用调色板的特殊代码,但事实并非如此。

问题是由于我的代码中调色板部分的像素错误引起的。

感谢所有回复的人。

(调色板中第230个之后的值为0...)

结果