<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />不完全随机的艺术生成器。请注意,paint 函数使用矩阵索引来避免显式 JSL 循环来设置像素的垂直线,或多或少垂直于画笔的路径。M 选择像素, blend1 和 blend2 使宽笔触的中心不透明,边缘更透明。(另一个项目的分支,部分灵感来自使用 Python 生成动态图像 – SWHarden.com .)
工厂艺术 - YouTube

窗口(“x”)<<关闭窗口;
规模 = 4;
眉毛 = 1080 * 比例;
bcols = 1920 * 比例;
红色 = J(眉毛,bcols,0);
绿色=J(眉毛,bcols,0);
蓝色 = J(眉毛,bcols,0);
图像编号 = 0;
油漆=函数({行,列,颜色,卓尔},
{m = Max(1, Min(brows, row - drow)) :: Min(brows, Max(1, row + drow)), r, g, b, blend1 = ((1 :: Max(1, Floor ( N 列( m ) / 2 ) ))
||如果(N列(米)> 1,
(天花板(N Cols(m)/2)::1),
[]
))` / Ceiling(N Cols( m ) / 2 ), blend2 = 1 - blend1},
{r, g, b} = 颜色转 RGB(颜色);
尝试(
红色[m, col] = (red[m, col]
混合 2 + r * 混合 1);
绿色[m, col] = (green[m, col]
混合 2 + g * 混合 1);
蓝色[m, col] = (蓝色[m, col]
混合 2 + b * 混合 1);
,
Show(exception_msg, row, col, r, blend1, blend2, drow, m);
停止();
);
);
条纹=函数({amp1,reps1,phase1,reps2,phase2,row,h1,h2,mindr,maxdr},
{ic, ir, fract, dr, color},
reps1 *= 2 * Pi();
reps2 *= 2 * Pi();
阶段 1 *= 2 * Pi();
阶段 2 *= 2 * Pi();
amp1 *= 比例;
mindr *= 规模;
maxdr *= 比例;
For( ic = 1, ic <= bcols, ic++,
分数 = ic / bcols;
ir = row + amp1 * Sin( phase1 + reps1 * fract );
dr = 插值(Sin(phase2 + reps2 * fract),-1,mindr,1,maxdr);
颜色 = HLS 颜色(插值(分数,0,h1,1,h2),.5,1);
油漆(红外,集成电路,颜色,博士);
如果(国防部(IC,512)== 0,
等待( .01 );
img = 新图像(“rgb”,{红、绿、蓝});
img << 比例( .5 );
img << saveimage( "\VBOXSVR\windowsShare\painter\pics\p" || Right( Char( imageno++ ), 6, "0" ) || ".jpg", "jpg" );
);
);
);
图片=函数({nstripes},
{条纹,fract,hue1,hue2},
For( istripe = 1, istripe <= nstripes, istripe++,
显示(条纹);
fract = istripe / nstripes;
nfract = 1 - 分数;
thisrow = Random Integer(brows / 200, brows - brows / 200);
rfract = thisrow / brows;
hue1 = 随机均匀(.8 * rfract + .3, .8 * rfract + .3);
if( hue1 > 1, hue1 -= 1 );// 低 h1 环绕
hue2 = hue1 + 随机均匀 (0, .2);
if( hue2 > 1, hue2 = 1 );// 防止 h2 回绕
条纹(
Interpolate(fract, 0, 50, 1, 10), // amp1
随机均匀 ( .1, .4 ), // rep1
随机均匀(0, 1),//相位
随机均匀 (0, .2), // rep2
随机均匀 (0, 1), // 阶段 2
thisrow, // 目标行
色调1,
色调2,
5, // 最小增量
随机整数( 5 + 25 * nfract, 50 + 150 * nfract ) // 最大增量
);
)
);
图片(100);
等待(0);
img = 新图像(“rgb”,{红、绿、蓝});
img << 比例( .5 );
img << saveimage( "\VBOXSVR\windowsShare\painter\pics\p" || Right( Char( imageno++ ), 6, "0" ) || ".jpg", "jpg" );
新窗口(“x”,img);