当我决定今年夏天玩色彩时,我想到了颜色通常描绘在色轮上的事实。这通常是颜料颜色而不是光,您会失去对颜色亮度或亮度变化的任何感觉。

作为色轮的替代方案,我提出了使用一系列图表在立方体表面显示 RGB 光谱的想法。 RGB 值将在具有 X 轴、Y 轴和 Z 轴的三维图上描绘。例如,一个表面将 B(或蓝色)保持为 0,其余轴将显示当我将值绘制为 R(红色)和 G(绿色)从 0 到 255 的颜色时发生的情况。

事实证明,使用Scribus及其Python Scripter功能来做到这一点并不难。我可以创建 RGB 颜色,制作显示颜色的矩形,并以 2D 格式排列它们。我决定为颜色设置 5 的值跳跃,并制作一边测量 5 个点的矩形。因此,对于每个 2D 图形,我会制作大约 250 种颜色,并且立方体的边长为 250 点,即 3.5 英寸。

我使用这段 Python 代码来完成绿-红图的任务:

x \u003d 300

y \u003d 300

r \u003d 0

g \u003d 0

b \u003d 0

如果 writer.newDoc(writer.PAPER_LETTER, (0,0,0,0),writer.PORTRAIT, 1, writer.UNIT_POINTS, writer.NOFACINGPAGES, writer.FIRSTPAGERIGHT):

当 r < 256 时:

当 g < 256 时:

新颜色 \u003d str(r) + '_' + str(g) + '_' + str(b)

如果新颜色 \u003du003d '0_0_0':

新颜色 \u003d '黑色'

scribus.defineColorRGB(newcolor,r,g,b)

矩形 \u003d scribus.createRect(x + g, y, 5, 5)

scribus.setFillColor(新颜色,矩形)

scribus.setLineColor(新颜色,矩形)

d y u003d d + 5

g \u003d 0

r \u003d r + 5

y \u003d y – 5

该脚本从 300, 300 开始图形结构,大约是美国 Letter 大小页面的水平中间位置,可能是从顶部向下的三分之一;这是图表的起源。然后它沿 X 轴(绿色值)水平构建图形,然后返回 Y 轴,向上跳页 5 个点,并制作另一行矩形。

红绿图

这看起来很容易;我只会摆弄数字并制作其他方面。但这不仅仅是再制作两张图表的问题,一张是蓝-绿,另一张是红-蓝。我想创建一个展开的立方体,以便可以打印、剪切、折叠并创建 RGB 的 3D 视图。因此,下一部分(页面向下)需要在左上角有原点(黑色角),绿色水平方向和蓝色垂直向下增加。

“摆弄数字”最终或多或少地反复试验以获得我想要的东西。创建第二个图形后,我需要第三个图形,即红色-蓝色,其原点位于左上角,红色向左增加,蓝色向下增加。

这里是:

RGB立方体前半部分

当然,这只是这个立方体的前半部分。我需要制作一个类似的形状,除了原点应该是白色(而不是黑色)来表示高值。这是我希望自己更聪明的时候之一,因为我不仅需要制作类似的整体形状,还需要以镜像的方式与第一个形状交互(我认为)。有时,反复试验是你唯一的朋友。

这是怎么出来的;我使用了一个单独的脚本,因为在美国信纸大小的页面上没有足够的空间供他们两个使用:

RGB立方体下半部分

现在,它是关闭的打印机!在这里,您可以了解彩色打印机在 RGB 到 CMYK 转换以及打印色彩密集空间的其他方面的表现。

接下来,男孩和女孩,这是剪切和粘贴时间!我可以使用胶带,但我不想改变表面的外观,所以我在切割时在侧面留下了一些标签,这样我就可以将它们粘在里面。根据经验,我可以说在复印纸上打印会出现一些不受欢迎的皱纹,所以在我的复印纸原型之后,我将立方体打印在较重的哑光纸上。

RGB 立方体

请记住,这只是 RGB 空间边界的视图;为了更准确,您必须制作一个可以在中间切片的实心立方体。例如,这将是一个通过实心 RGB 立方体的切片,其中 Blue u003d 120:

RGB立方体切片

最后,我在这个项目上玩得很开心。如果您想加入聚会,这里有两个脚本。这些脚本需要 Scribus 1.5.x,它提供了 defineColorRGB() 函数。

这是前半部分:

#!/usr/bin/env python

# black2rgb.py

"""

以黑色为原点创建二分之一的 RGB 立方体

"""

进口业务员

x \u003d 300

y \u003d 300

r \u003d 0

g \u003d 0

b \u003d 0

如果 writer.newDoc(writer.PAPER_LETTER, (0,0,0,0),writer.PORTRAIT, 1, writer.UNIT_POINTS, writer.NOFACINGPAGES, writer.FIRSTPAGERIGHT):

当 r < 256 时:

当 g < 256 时:

新颜色 \u003d str(r) + '_' + str(g) + '_' + str(b)

如果新颜色 \u003du003d '0_0_0':

新颜色 \u003d '黑色'

scribus.defineColorRGB(newcolor,r,g,b)

矩形 \u003d scribus.createRect(x + g, y, 5, 5)

scribus.setFillColor(新颜色,矩形)

scribus.setLineColor(新颜色,矩形)

d y u003d d + 5

g \u003d 0

r \u003d r + 5

y \u003d y - 5

r \u003d 0

g \u003d 0

y \u003d 305

当 b < 256 时:

当 g < 256 时:

新颜色 \u003d str(r) + '_' + str(g) + '_' + str(b)

如果新颜色 \u003du003d '0_0_0':

新颜色 \u003d '黑色'

scribus.defineColorRGB(newcolor,r,g,b)

矩形 \u003d scribus.createRect(x + g, y, 5, 5)

scribus.setFillColor(新颜色,矩形)

scribus.setLineColor(新颜色,矩形)

d y u003d d + 5

g \u003d 0

b \u003d b + 5

y \u003d y + 5

r \u003d 255

g \u003d 0

y \u003d 305

x \u003d 39

b \u003d 0

当 b < 256 时:

当 r >u003d 0 时:

新颜色 \u003d str(r) + '_' + str(g) + '_' + str(b)

如果新颜色 \u003du003d '0_0_0':

新颜色 \u003d '黑色'

scribus.defineColorRGB(newcolor,r,g,b)

矩形 \u003d scribus.createRect(x, y, 5, 5)

scribus.setFillColor(新颜色,矩形)

scribus.setLineColor(新颜色,矩形)

r \u003d r - 5

x \u003d x+5

b \u003d b + 5

x \u003d 39.5

r \u003d 255

y \u003d y + 5

write.setRedraw(True)

scribus.redrawAll()

现在下半场:

#!/usr/bin/env python

# white2rgb.py

"""

以白色为原点创建二分之一的 RGB 立方体

"""

进口业务员

x \u003d 300

y \u003d 300

r \u003d 255

g \u003d 255

乙 \u003d 255

如果 writer.newDoc(writer.PAPER_LETTER, (0,0,0,0),writer.PORTRAIT, 1, writer.UNIT_POINTS, writer.NOFACINGPAGES, writer.FIRSTPAGERIGHT):

当 g >u003d 0 时:

当 r >u003d 0 时:

新颜色 \u003d str(r) + '_' + str(g) + '_' + str(b)

如果新颜色 \u003du003d '255_255_255':

新颜色 \u003d '白色'

scribus.defineColorRGB(newcolor,r,g,b)

矩形 \u003d scribus.createRect(x + 255 - r, y, 5, 5)

scribus.setFillColor(新颜色,矩形)

scribus.setLineColor(新颜色,矩形)

r \u003d r - 5

r \u003d 255

d y u003d d - 5

y \u003d y - 5

r \u003d 255

g \u003d 255

y \u003d 305

而 b >u003d 0:

当 r >u003d 0 时:

新颜色 \u003d str(r) + '_' + str(g) + '_' + str(b)

如果新颜色 \u003du003d '255_255_255':

新颜色 \u003d '白色'

scribus.defineColorRGB(newcolor,r,g,b)

矩形 \u003d scribus.createRect(x + 255 - r, y, 5, 5)

scribus.setFillColor(新颜色,矩形)

scribus.setLineColor(新颜色,矩形)

r \u003d r - 5

r \u003d 255

b \u003d b - 5

y \u003d y + 5

r \u003d 255

g \u003d 0

y \u003d 305

x \u003d 39

乙 \u003d 255

而 b >u003d 0:

当 g < 256 时:

新颜色 \u003d str(r) + '_' + str(g) + '_' + str(b)

如果新颜色 \u003du003d '255_255_255':

新颜色 \u003d '白色'

scribus.defineColorRGB(newcolor,r,g,b)

矩形 \u003d scribus.createRect(x + g, y, 5, 5)

scribus.setFillColor(新颜色,矩形)

scribus.setLineColor(新颜色,矩形)

d y u003d d + 5

g \u003d 0

b \u003d b - 5

y \u003d y + 5

write.setRedraw(True)

scribus.redrawAll()

由于我正在创建大量颜色,因此看到 Scribus 文件比我制作的 PDF 文件大得多,我并不感到惊讶。例如,我的 Scribus SLA 文件为 3.0MB,而我从中生成的 PDF 只有 70KB。

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐