Tuonne päivän nostoon ei päässyt enää kommentoimaan...
Joissain hommissa REBOL loistaa tehokkuudellaan, kuten tässä tapauksessa, kun kuvan väreihin päästään suoraan käsiksi face metodin efectillä. Jos haluaa hienosäätää värejä, niin esimerkiksi red tilalla voi olla vaikka arvo 255.80.80 Siis [multiply 255.80.80]
Tuolla kolme tuotettua eriväristä kuvaa:
https://petke.info/effects.html
"face metodin efectillä". Varmasti käytän väärää kieltä, mutta koodista näette kuinka se tehdään. En kommentoinut koodia, kun en ihan ymmärrä tuota "face metodin efectiä" - kunhan tarvittaessa käytän sitä :)
rebol[] time1: now/precise kuva: load %auto.png maxx: kuva/size/x maxy: kuva/size/y koko: as-pair maxx maxy f: make face [ size: (koko) image: kuva effect: [multiply red] ] punainen: to-image f save/png %red.png punainen f: make face [ size: (koko) image: kuva effect: [multiply blue] ] sininen: to-image f save/png %blue.png sininen f: make face [ size: (koko) image: kuva effect: [multiply yellow] ] keltainen: to-image f save/png %yellow.png keltainen time2: now/precise print rejoin ["Harmaa auton kuva ladattiin ja siitä talletettiin kovalevylle kolme eriväristä versiota ajassa " difference time2 time1] halt
REBOL tulosti kirjoitti:
Harmaa auton kuva ladattiin ja siitä talletettiin kovalevylle kolme eriväristä versiota ajassa 0:00:00.033
>>
Se ongelma tuossa on, että tuo väri ei voi olla muuttuja, mutta kiersin ongelman kerran koodilla, mikä teki REBOL-koodia ja se ajettiin sitten, do %temp.r käskyllä. (EDIT: minulla on tässä ohjelmassa rumasti merkkijonon, mihin koodia kerätään nimi "html" - mikä johtuu, että joskus tein html koodia merkkijonoon) Eipä näiden 120 kpl autojen tuottamiseenkaan mennyt kuin alle sekunti, mikä sisältää myöskin värit blockin teon, mihin tällä kertaa laitetaan väriliukumia arvottujen värien välille.
Tuolla tuotetut 120 auto kuvaa: https://petke.info/autot.html Eri ajokerroilla tulee tietysti erivärisiä kuvia, koska alustan satunnaislukugeneraattorin.
rebol[] väriluvut: [0 32 64 96 128 160 192 224 255] värit: copy[] random/seed now/precise lkm: 5 ;moniaskelinen väriliukuma? ;Arvotaan kaksi väriä r1: väriluvut/(random 9) g1: väriluvut/(random 9) b1: väriluvut/(random 9) for j 1 500 1 [ r2: väriluvut/(random 9) ;arvotaan kaksi väriä, joiden välille liukuma tehdään g2: väriluvut/(random 9) b2: väriluvut/(random 9) dr: (r2 - r1) / lkm dg: (g2 - g1) / lkm db: (b2 - b1) / lkm r: round r1 g: round g1 b: round b1 for i 1 lkm 1 [ append värit to-tuple compose [(to-integer r) (to-integer g) (to-integer b)] r: r + dr g: g + dg b: b + db ] r1: r2 g1: g2 b1: b2 ] print "värit valmiina" color: 1 kuva: load %auto.png koko: as-pair kuva/size/x kuva/size/y maxcolor: length? värit kuvannumero: 1 for kuvia 1 12 1 [ for kuvaind 1 10 1 [ html: make string! 100000 emit: func [code] [repend html code] lmrk: to-char 34 newline: to-char 10 emit ["rebol[]" newline] emit ["plot: copy[]" newline] emit ["f: make face [" newline] emit [" size: (koko)" newline] emit [" image: kuva"] emit [" effect: [multiply " (värit/(color)) "]" newline] emit ["]" newline] color: color + 1 if color > maxcolor [color: 1] emit ["kuva3: to-image f" newline] emit ["save/png to-file rejoin [" lmrk "erivarinen" kuvannumero ".png" lmrk "] kuva3" newline] kuvannumero: kuvannumero + 1 tied: to-file "temp.r" write tied html do %temp.r ] ] halt
Tuolla kuvalle laitetulla face:lla voi tehdä monenlaisia muitakin temppuja sen funktioilla kuin värittää tuolla multiply:llä
Tuolla kymmenen allaolevalla koodilla tehtyä: https://petke.info/facet.html
EDIT: tyhjentäpääkä cache ja ladatkaa sivu uudestaan ne jotka jo ehtivät. Oli kuvien tuotannossa pientä bugia...
Joka haluaa manuaaliin tutustua, niin mm. tuolta löytyy muutama lisää: http://www.rebol.com/docs/view-face-effects.html
rebol[] random/seed now/precise maxx: 100 maxy: 300 koko: as-pair maxx maxy kuva: load %kuva.png ;ladataan ruusun nippukuva ;----------------------------------- f: make face [ size: (koko) image: kuva effect: [fit] ] kuva1: to-image f save/png %f1.png kuva1 ;----------------------------------- koko2: as-pair 1920 500 f: make face [ size: (koko2) image: kuva effect: [aspect] ] kuva2: to-image f save/png %f2.png kuva2 ;------------------------------------ f: make face [ size: (koko) image: kuva effect: [extend 300x300 1920x1080] ] kuva4: to-image f save/png %f4.png kuva4 ;----------------------------------- pikkux: 1920 / 8 pikkuy: 1080 / 8 kokopikku: as-pair pikkux pikkuy f: make face [ size: (kokopikku) image: kuva effect: [fit] ] kuva4: to-image f save/png %f4.png kuva4 ;-------------------------------------- koko: as-pair kuva/size/x kuva/size/y f: make face [ size: (koko) image: kuva effect: [tile] ] kuva5: to-image f save/png %f5.png kuva5 koko: as-pair kuva/size/x kuva/size/y ;----------------------------------- f: make face [ size: (koko) image: kuva effect: [tile-view] ] kuva6: to-image f save/png %f6.png kuva5 ;----------------------------------- kokorandom: as-pair random maxx random maxy f: make face [ size: (kokorandom) image: kuva effect: [clip] ] kuva7: to-image f save/png %f7.png kuva5 ;----------------------------------- koko: as-pair kuva/size/x kuva/size/y f: make face [ size: (koko) image: kuva effect: [flip 300x700] ] kuva8: to-image f save/png %f8.png kuva8 ;---------------------------------- f: make face [ size: (koko) image: kuva effect: [invert] ] kuva9: to-image f save/png %f9.png kuva9 ;----------------------------------- f: make face [ size: (koko) image: kuva effect: [difference 100.200.250] ] kuva10: to-image f save/png %f10.png kuva10 ;----------------------------------- f: make face [ size: (koko) image: kuva effect: [multiply 134.179.63] ] kuva11: to-image f save/png %f11.png kuva11 halt
Aihe on jo aika vanha, joten et voi enää vastata siihen.