Algorithm 1位位图数据如何转换为8位(24bpp)?
假设我有4个位图,比如说CMYK,它们都是1比特/像素,颜色不同,我想把它们转换成8比特/颜色(24bpp)的位图,我该怎么做 如果数据如下所示:Algorithm 1位位图数据如何转换为8位(24bpp)?,algorithm,image-processing,colors,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值为(0255255),在
// 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值为(0255255),在像素0(第一个像素)处,我的值为1(开),洋红的RGB值为(255255,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),则为白色 青色+洋红=蓝色:(0255255)+(255,0255)!=(0, 0, 255). 但不完全是这样,因为我们谈论的是不同的颜色系统 您需要首先以CMYK格式构造像素,然后将它们转换为RGB,这可以通过执行
(R,G,B)=(1-C,1-M,1-Y)
来近似
为了将1位值转换为8位值,您只需将每个
0
转换为0x00
,将每个1
转换为0xFF
:将bitValue
乘以0xFF,实际上,使用1位编码的CMYK,您有16种可能的组合(颜色),其中9种为黑色
xxx1 -- black (8 comb's) -- 0x000000
0000 -- white -- 0xFFFFFF
1000 -- cyan -- 0x00FFFF
0100 -- magenta -- 0xFF00FF
0010 -- yellow -- 0xFFFF00
1100 -- blue -- 0x0000FF
1010 -- green -- 0x00FF00
0110 -- red -- 0xFF0000
1110 -- black -- 0x000000
考虑到这一点,我宁愿使用映射(切换情况或if-elses),而不是从CMYK计算RGB的实际算法。当然,如果设置了K,就早点回来。对,我完全忘了。。所以,当你说我必须用CMYK来构造像素时,这是否意味着它将类似于4位索引颜色?(CMYK)=(1,1,1,1)。。等等无论如何,这很有帮助,谢谢。。将此标记为答案..是的,您需要构建颜色的4元组。正如我所说,问题在于将CMYK转换为RGB,因为没有标准的方法,正如@danben所说。也许(R,G,B)=((1-C)(1-K)、(1-M)(1-K)、(1-Y)(1-K))
。好的,谢谢……)近似值足够好了,我只需要RGB显示在RGB设备(显示器)上。。再次感谢:)顺便说一句,在你给出的最后一个公式中,因为CMYK的值只能是1或0(1位),如果C或K是1,那么R部分将是0?