Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: REBOL loisti tehokkuudellaan

PetriKeckman [28.06.2022 17:03:28]

#

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
>>

PetriKeckman [28.06.2022 17:31:11]

#

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

PetriKeckman [28.06.2022 19:06:04]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta