Kaksi yksinkertaista koodia avasivat tien hienoon galleriaan 🎨✨
Iloisia uutisia taiteen ohjelmointirintamalta. Pidän yksityisnäyttelyn galleria Kookoksessa 24.2.-14.3.2026 Pohjoinen Rautatiekatu 17. Keskeisellä paikkaa Helsinkiä HAM-museota vastapäätä.
Tässä algoritmi 1:
Sen tuottamia kuvia 300 kpl: https://petke.info/uus/points.html
rebol[] plot: copy[pen off] maxx: 2000 maxy: 2000 random/seed now/precise main: layout [ box (as-pair (maxx) (maxy)) black effect reduce ['draw plot] ] kuva2: copy/part skip to-image main 20x20 (as-pair maxx maxy) ;random/seed now/precise print "wait..." kerroinx: 0.00005 kerroiny: 0.00005 for kuvaind 1 3000 1 [ x0: random maxx y0: random maxy x1: random maxx y1: random maxy x2: random maxx y2: random maxy x3: random maxx y3: random maxy x4: random maxx y4: random maxy x5: random maxx y5: random maxy x6: random maxx y6: random maxy x7: random maxx y7: random maxy x8: random maxx y8: random maxy x9: random maxx y9: random maxy for x 0 (maxx - 1) 1 [ for y 0 (maxy - 1) 1 [ xp: x0 + (kerroinx * x) yp: y0 + (kerroiny * y) et1: square-root (((xp - x1) * (xp - x1)) + ((yp - y1) * (yp - y1))) et2: square-root (((xp - x2) * (xp - x2)) + ((yp - y2) * (yp - y2))) et3: square-root (((xp - x3) * (xp - x3)) + ((yp - y3) * (yp - y3))) et4: square-root (((xp - x4) * (xp - x4)) + ((yp - y4) * (yp - y4))) et5: square-root (((xp - x5) * (xp - x5)) + ((yp - y5) * (yp - y5))) et6: square-root (((xp - x6) * (xp - x6)) + ((yp - y6) * (yp - y6))) et7: square-root (((xp - x7) * (xp - x7)) + ((yp - y7) * (yp - y7))) et8: square-root (((xp - x8) * (xp - x8)) + ((yp - y8) * (yp - y8))) et9: square-root (((xp - x9) * (xp - x9)) + ((yp - y9) * (yp - y9))) Ri: (xp + yp * et1) Gi: (xp * yp + et2) Bi: xp + yp + et3 R: 255 * cosine (360 * sine Ri) G: 255 * sine (360 * cosine Gi) + et4 B: 255 * cosine (360 * sine Bi) väri: to-tuple compose [(to-integer (G + B)) (to-integer (G + R)) (to-integer (B + R))] if (R * G * B) <= (3 * 128 * 128 * 128) [ Ri: (xp + yp * et4) Gi: (xp * yp + et5) Bi: xp + yp + et6 R: 255 * sine (360 * cosine Ri) + et3 G: 255 * sine (360 * sine Gi) B: 255 * cosine (360 * cosine Bi) väri: to-tuple compose [(to-integer (G + B)) (to-integer (G + R)) (to-integer (B + R))] ] if (R * G * B) >= (3 * 128) [ Ri: (xp + yp - et7 + et3) Gi: (xp * yp + et8) Bi: xp + yp * et9 + et6 R: 255 * sine (360 * cosine Ri) G: 255 * sine (360 * sine Gi) B: 255 * cosine (360 * cosine Bi) väri: to-tuple compose [(to-integer (R)) (to-integer (G)) (to-integer (B))] ] ;väri: to-tuple compose [(to-integer (G + B)) (to-integer (G + R)) (to-integer (B + R))] poke kuva2 (as-pair x y) (väri) ] ] save/png to-file rejoin ["_p" kuvaind ".png"] kuva2 print kuvaind ] halt
Tässä algoritmi 2:
Sen tuottamia kuvia 500 kpl: https://petke.info/uus/retro.html
rebol[]
random/seed now/precise
maxx: 1920
maxy: 1080
versioiden_maara: 100 ; montako yhdistettyä kuvaa haluat tehdä
print "Aloitetaan yhdistely..."
for i 1 versioiden_maara 1 [
; --- Arvotaan 5 erilaista kuvaindeksiä väliltä 1–171 ---
kaikki: copy []
for i 1 171 1 [append kaikki i]
kaikki: random kaikki
kuvat: copy/part kaikki 5
; --- Ladataan kuvat ---
kuva1: load to-file rejoin ["k" kuvat/1 ".jpg"]
kuva2: load to-file rejoin ["k" kuvat/2 ".jpg"]
kuva3: load to-file rejoin ["k" kuvat/3 ".jpg"]
kuva4: load to-file rejoin ["k" kuvat/4 ".jpg"]
kuva5: load to-file rejoin ["k" kuvat/5 ".jpg"]
; --- Luodaan tyhjä pohja ---
plot: copy []
main: layout [
box (as-pair maxx maxy) black effect reduce ['draw plot]
]
tausta: copy/part skip to-image main 20x20 (as-pair maxx maxy)
; --- Käydään pikselit läpi ja otetaan keskiarvoväri ---
for x 0 (maxx - 1) 1 [
for y 0 (maxy - 1) 1 [
väri1: pick kuva1 (as-pair x y)
väri2: pick kuva2 (as-pair x y)
väri3: pick kuva3 (as-pair x y)
väri4: pick kuva4 (as-pair x y)
väri5: pick kuva5 (as-pair x y)
r: väri1/1 + väri2/1 + väri3/1 + väri4/1 + väri5/1
g: väri1/2 + väri2/2 + väri3/2 + väri4/2 + väri5/2
b: väri1/3 + väri2/3 + väri3/3 + väri4/3 + väri5/3
väri: to-tuple compose [
(to-integer (r / 5))
(to-integer (g / 5))
(to-integer (b / 5))
]
poke tausta (as-pair x y) väri
]
]
; --- Tiedostonimi, josta näkyy käytetyt kuvat ---
tiedostonimi: rejoin [
"yhdistetty_"
kuvat/1 "_" kuvat/2 "_" kuvat/3 "_" kuvat/4 "_" kuvat/5
".png"
]
save/png to-file rejoin ["/E/Suomen Taitelijat ry/vuosinäyttely2025/mietteet/omatekoäly/videokuvat/UNI/" tiedostonimi] tausta
print rejoin ["Tallennettu: " tiedostonimi]
]
print "Valmista!"
haltNäyttelyhakemus: https://petke.info/galleriakookosyksityisnayttely/hakemus_kookos.html
Teosluettelo: https://petke.info/galleriakookosyksityisnayttely/teosluettelo.html
Hienoa! Mitä tarkoittaa yksityisnäyttely? Saako näyttelyyn tulla tutustumaan ja maksaako se jotain?
Antti Laaksonen kirjoitti:
Hienoa! Mitä tarkoittaa yksityisnäyttely? Saako näyttelyyn tulla tutustumaan ja maksaako se jotain?
Joo. On hienoa! Yksityisnäyttely tarkoittaa sitä, että koko galleria on minulle varattu.
Olen tehnyt jo ripustussuunnitelmankin, käyttäen apuna omaa REBOL-ohjelmaani:
https://petke.info/
Olen kohta viemässä kolmea alumiinitaulua yhteisnäyttelyyn, eli ryhmänäyttelyyn:
https://www.galleriakookos.fi/kuiskauksia-ja-huutoja-whispers-and-screams/
Sen avajaiset on jo ens viikon tiistaina.
Gallerian johtaja otti minuun yhteyttä Instagram tilin kautta ja pyys hakemaan yhteisnäyttelyyn. Se rohkaisi minua hakemaan jopa yksityisnäyttelyä.
Mun yksityisnäyttely on siis ajalla 24.2.-14.3.2026. Gallerian aukioloajat ovat:
Tue – Fri 13:00-18:00, Sat 13:00-17:00, closed for public holiday
Jos kiinnostaa tavata, ni tuu moikkaamaan avajaisiin 24.2.2026 ti klo 18-20. Avajaiset on kivoja tapahtumia. Ois ihan kiva tavata Ohjelmointiputkan gurua. Sinähän kai olet ollut alusta alkaen mukana? Ja joo: ei maksa mitään gallerioissa käynti. Mulle maksaa maltaita sen vuokraaminen, mutta toivottavasti myyntiä tulee.
Kiitos tiedoista ja kutsusta! Tulen helmikuussa avajaisiin, jos se sopii aikatauluuni.