大多数图片具有三个数据通道:红色、绿色和蓝色,通常称为 RGB 数据。 图像中的每个像素都有每个颜色通道的值,在 JMP 中 (0,0,0) 将是黑色、(1,1,1) 白色、(1,0,0) 红色和 (0.5,0.5 ,0.5) 灰色。
网页设计师喜欢另一种透明的信息渠道;图标通常有透明区域,可以让背景显示出来。 该通道称为 alpha 通道并变为 RGBA。
Alpha 通道和颜色通道一样,可以有分数值; alpha 和 1 - alpha 是用于生成结果的前景和背景的分数。 如果您看起来不太近,结果会非常好。
Alpha transparency around JMP's iconAlpha transparency around JMP's iconAlpha transparency around JMP's iconAlpha transparency around JMP's iconJMP 图标周围的 Alpha 透明度
您可以通过运行附加的 AlphaIcon.jmpapp 对此进行试验。 图标后面的渐变通过透明区域显示出来,边缘在蓝色和绿色或蓝色和橙色之间交叉淡入淡出。 0.0 的 alpha 值让渐变显示; 1.0 显示图标,分数值显示交叉淡化。 (我使用放大镜应用程序来获得大像素化图像。 我使用 App Builder 将图标框浮动在带有渐变的图形上。)
上面的示例是使用 alpha 通道的典型方式。 下面的例子是一个变体。 JSL 使用 RGB 值绘制颜色并使用 alpha 值绘制白(或黑)线。 还有其他方法可以获得相同的效果,但这种方法不需要额外的代码来合并数据。 线条的颜色由包含图像框的边框框的背景色决定。 当 alpha 值为 0 时,显示背景。 在 render 函数中,组合了两个数组 bitcolor 和 bitcurve 来制作图像。 bitcurve 是用 1.0 构建的,该位置应该出现线条,因此 1-bitcurve 生成所需的 alpha 通道。
{red,green,blue} = colortorgb(bitcolor);
image=newimage("rgba",{red,green,blue,1-bitcurve});将结果从黑底白线更改为白底黑线是通过更改边框颜色来完成的。
newwindow("curves",bb=borderbox(textbox("")));
bb<<SETBACKGROUNDCOLOR></SETBACKGROUNDCOLOR>边框框是用一个虚拟文本框子项创建的,该子项被第一个图像替换。
(bb<<CHILD></CHILD>
左边是位曲线,中间是位色,右边是 RGBA。 在此图像中,RGB 数据大部分为黑色,白色背景显示在 alpha 通道 > 0.0 的位置。
Border box with a white backgroundBorder box with a white backgroundBorder box with a white backgroundBorder box with a white background白色背景的边框框
在此图像中,RGB 数据大部分为白色,黑色背景反而显示出来。
Border box with a black backgroundBorder box with a black backgroundBorder box with a black backgroundBorder box with a black background黑色背景的边框框
在上面的两个图像中,右侧显示了边界框背景颜色上颜色的 alpha 混合。
附加的 curveyBlog.jsl 通过增加活动线、随机分支并拍照来构建图像。 视频是这里并希望最大化。
上一个例子.
谢谢! 我喜欢具有多个可调参数的算法,这些参数有助于指导随机元素的使用方式。 这个一直运行直到藤蔓用完足够的空间以防止进一步生长。 一旦选择了参数,我就运行了几次以获得一组我喜欢的图像,以正确的步长来制作我喜欢的视频长度。