您的位置:首页 > 其它

关于颜色模型的考虑

2007-12-19 19:45 302 查看
在整理功能时,突然意识到了 GDI+ 的一个重大限制:它仅仅支持 RGB 颜色模型。而平面绘图软件,至少应当是支持 RGB 和 CMYK 色彩空间的,GDI+ 由于仅仅用于屏幕绘图,仅需要与显示设备打交道,此根本没有考虑过 RGB 之外的色彩模型。这对于我们的 OpenPainter 来说,是一个很大的限制。

Photoshop 支持位图、灰度、RGB、CMYK、HSB、Lab、多通道及索引模式这几种颜色模式,对于灰度、RGB、CMYK、HSB、Lab及多通道这几种模式来说,还分 8 位、16 位、32 位三种色彩深度。我总是希望能够尽可能地利用 GDI+ 的既有功能,因此开始分析这些不同的模式。虽然说 RGB、CMYK、HSB、Lab 这些颜色空间的运算法则完全不同,但有一点是相同的,即它们都是由多个互相独立的通道组成。事实上,如果不考虑将图片显示出来的话,仅仅是绘图操作与保存,不同的颜色模式之间没有任何区别——无非是将每个像素根据通道数拆分成几个子像素,每个子像素根据所属通道的不同具有自己的取值范围而已。基于这个结论,我们可以将任何一种以通道为基础的颜色空间视为 n 个大小相同的灰度图像的组合。例如 RGB-8bits 图像即是由三个同尺寸的 8 位灰度图像合成的,分别代表 R、G、B 三个通道的亮度;而 CMYK-16bits 图像即是由四个同尺寸的 16 位灰度图像合成的,分别代表 C、M、Y、K 四个通道的颜色深度等等。

这么做其实可以很好地解决任何一种通道色彩模型,但限制很快又出现了,GDI+ 并不支持 8 位的灰度图像,而 8 位颜色深度是目前最为常用的。这使得我们几乎无法用刚才的方式来模拟通道色彩模型,而且每个通道单独绘制,也需要反复进行子像素亮度提取与绘制操作。无论是光栅位置的计算还是色彩混合操作次数都成倍增长,使 GDI+ 原本就不好的性能损失更大。

由于无法解决色彩模型这一根本限制,我们不得抛弃 GDI+,考虑基于 GDI 开发自己的图形库。这将意味着我们必须自己实现形状绘制、文本绘制、反走样、色彩混合、图像变换等基本的图形处理功能。鉴于这将是一个巨大的工程,我们可能在第一个公开预览版本中只支持 RGB-8bits 模式,继续使用 GDI+ 作为图形库。并在软件成型的基础上,逐步将其替换出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: