关于颜色模型的考虑

在整理功能时,突然意识到了 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+ 作为图形库。并在软件成型的基础上,逐步将其替换出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值