krok 1: najdes si nejaky kod
https://www.geeksforgeeks.org/…ixel-method/
# Importing Image from PIL package
from PIL import Image
# creating a image object
image = Image.open(r'C:\Users\System-Pc\Desktop\python.png')
width, height = image.size
for x in range(height):
image.putpixel( (x, x), (0, 0, 0, 255) )
image.show()
Z toho kodu, je jasne videt, ze python pouziva pro vykreslovani funkci
image.putpixel( (x, x), (0, 0, 0, 255)
---
krok 2, zjistis neco vic, treba najsed dokumentaci: google = python putpixel documentation
putpixel((x,y),(r,g,b,0)) https://linuxtut.com/…a52191b164b/
Cili, do te funkce se zadavaji souradnice, x,y, ktere budes generovat cyklem. A slozky barvy r-g-b, red-gree-blue a nejaka ctvrta slozka, ktera nejspis bude pruhlednost, jas nebo tak neco.
---
krok 3: Takze, bys si nejdriv vyrobil program, ktery mi zobrazi tak 10 pixelu. Az to budes mit, tak ma smysl zabyvat se cykly.
---
Jak generovat ten obrazek?
Musis se na ten obrazek divat jako na tabulku cisel.
Nahore jsou bile barvy. Bila barva ma vsechy red-green-blue = 255, 255, 255, putpixel((x,y),(255,255,255,0))
Dole jsou cerne barvy. Cerna je nula. red-green-blue = 0, 0, 0.
Takze, uz v tuto chvili vis, ze cyklus pujde zhora 255 dolu do 0 pro vsechny 3 slozky barvy.
Ale, jak to bude s tim zleva doprava?
Tam je poradi barev fialova, cervena, zluta, zelena, svetla modra, modra, fialova.
fialova 255, 0, 255 (cerveno-fialova)
cervena 255, 0, 0 (cervena)
zluta 255, 255, 0 (cerveno-zelena)
zelena 0, 255, 0 (zelena)
svetla modra 0, 255, 255 (zeleno-modra)
modra 0, 0, 255 (modra)
fialova 255, 0, 255 (cerveno-fialova)
Takze, potrebujes funkci, ktera pro x 0-255 nebo 0-1000 vygeneruje hodnoty duhy a pro y 0-255 ty hodnoty zeslabi o 0-255.
funkce (x, x_max, y, y_max) {vypocitej barvu}
Kde ten vypocet budes delat vypoctem pomeru, prevazne. x/x_max * 255, y/y_max * 255.
---
Pozn. Mozna bude mozne pouzit funkce pro hsl-barevny model nebo rgb model. A nebo je to zavadejici informace :)
google = rgb grayscale wiki
Sedy odstin (prevod barevneho obrazku na sedy) se v rgb pocita jako
shadow = 0.2627 * r + 0.7152 * g + 0.0722 * b
Pozn: Lidske oko je citlive na zeleno-zlutou barvu. Tu vnima jako nejsvetlejsi. Takze, pri vypoctu jasu hraje zasadni roli, 71.52%.
---
To, ze jste dostali za 5 je z lenosti. Treba si sednout a premyslet nad tim, co znas. A sehnat nekoho, kdo ti poradi, co s tim, pripadne i sam ucitel. Jde o to se to naucit, nejde o to trestat zaky petkami. Znamka jen hodnoti znalosti, ktere jsi prokazal. Bud je hrozne spatne zadani nebo jsi nevenoval dost casu pochopeni problemu. Nebo jsi nepochopil zaklady. Co se vlastne v takovem programu da a neda delat.
Program jen vykonava prikazy. A pracuje jen s tim, co ma v pameti. Neco veme z pameti, provede s tim nejake operace a vrati to zpet do pameti. Disk, kraficka karta, pametova karta, vse je to pamet, ktera je pristupna pres cislo. nacti_z(n), zapis_do(n). Pocitac ma urcene, ze
n=[0 az x] je disk,
n=[x+1 az y] je graficka karta,
n=[y+1 az z] je kopirovani dat pres sitovy kabel...
Cili, vse, co muzes delat jsou jen vypocty a presun 1 nebo vice znaku z pameti z procesoru nebo zpet do pameti. K tomu mas promene a cykly a operace s promenymi (porovnani IF, matematicke nebo jine funkce nebo tvoje funkce, ruzne moduly ktere delaji spoustu veci uz za tebe).
Takze, kdyz po vas ucitel chce program, tak chce, abys tam mel funkce, promene a cykly. A vsechno, ostatni v zadani do toho musis napasovat.