如何将调色板应用于位图
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...)
结果
我正在自己制作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...)
结果