/** program to make an image with each pixel in a different color. Now what? */ stepsize = 4 colors = new array multifor color = [new range[0, 255, stepsize], new range[0, 255, stepsize], new range[0, 255, stepsize]] { colors.push[color] } colors.shuffle[] side = ceil[sqrt[length[colors]]] println["side is $side"] img = new image[side, side] //dirs = [[-1,0], [0, -1]] //dirs = [[-1,0], [1,0], [0, -1], [0,1]] dirs = [[-1,0], [1,0], [0, -1], [0,1], [-1,-1], [1,1], [-1,1], [1,-1]] idx = 0 for [r,g,b] = colors { img.setPixelInt[idx div side, idx mod side, r,g,b] idx = idx + 1 } img.show[] img.write["allColors2.png"] g = new graphics win = g.show[] for t = 0 to 40 side { s = (t mod 2) + 1 for y = 0 to side-1 step s { for x=0 to side-1 step s { [r1,g1,b1] = img.getPixelInt[x,y] bestd = undef bestdiff = million for d = dirs { [dx, dy] = mul[d, s] [r2,g2,b2] = img.getPixelInt[(x+dx) mod side, (y+dy) mod side] diff = (r1-r2)^2 + (g1-g2)^2 + (b1-b2)^2 if diff < bestdiff { bestd = d bestdiff = diff } } [dx, dy] = mul[bestd, s] x1 = (x + dx) mod side y1 = (y + dy) mod side temp = img.getPixelAsColor[x,y] img.setPixel[x,y,img.getPixelAsColor[x1,y1]] img.setPixel[x1,y1, temp] } } g = new graphics g.antialiased[false] g.add[img] win.replaceGraphics[g] } img.show[] img.write["allColors2.png"] //img2 = img.gaussianBlur[3] //img2.show[]