algorithm - 1位位图数据如何转换为8位(24bpp)?

标签 algorithm image-processing colors

假设我有 4 张位图,比如 CMYK,所有这些都是 1 位/像素并且具有不同的颜色,我想将它们转换为 8 位/颜色 (24bpp) 位图,我该怎么做?

如果数据是这样的:

// the Cyan separation

CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC
...

// the magenta separation, and so on..
MMMM MMMM MMMM MMMM MMMM MMMM MMMM MMMM
...

比如说,青色的 RGB 值为 (0,255,255),在像素 0(第一个像素)处,我的值为 1(开),洋红色的 RGB 值为 (255,255,0),并且在同一个像素,值为 1.. 第一个 RGB 像素会是什么样子?会是这个样子吗?

BBBB BBBB GGGG GGGG RRRR RRRR
// would this 3-byte sequence  actually be 255,255,255
// because the cyan has (0,255,255) and the 
// magenta has (255,255,0)?

谢谢,只是对如何将 1 位分色转换为 8 位图像感到困惑..谢谢..

最佳答案

CMYK 是一种减色系统,而 RGB 是一种加色系统。

如果 CMY(K) 值为 (1.0, 1.0, 1.0),它是黑色的,而 RGB 值为 (255, 255, 255),它是白色的。

青色 + 品红色 = 蓝色:(0, 255, 255) + (255, 0, 255) != (0, 0, 255)。但不完全是,因为我们谈论的是不同的颜色系统。

您需要先构建 CMYK 中的像素,然后将它们转换为 RGB,可以通过 (R, G, B) = (1-C, 1) 近似 -M, 1-Y).

为了将 1 位值转换为 8 位值,您只需将每个 0 转换为 0x00 并将每个 1 转换为 0xFF:将 bitValue 乘以 0xFF

关于algorithm - 1位位图数据如何转换为8位(24bpp)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003643/

相关文章:

string - 你怎么能在低级别对字符串单词进行排序?

c++ - 如何以n位数组的方式生成所有n位数字?

algorithm - 交替 bool 范围的二维正交加法投影

algorithm - 找出每个节点的大小

python - 没有循环的python中的均值滤波器

javascript - Canvas - floodfill 在边缘留下白色像素

algorithm - 什么是获得颜色以使图像上的文本突出的好算法?

c++ - 检测图像的特定矩形部分

javascript - 是否可以修改从 HTML5 中的 Canvas 获取的图像的 exif 数据?

text - 是否有 wx 小部件来显示 ANSI 转义码彩色文本?