Grafika żółwia - rysowanie małej bitmapy

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 5356 razy

Pomyślałem sobie, że napiszę mały skrypt, którego zadaniem będzie narysowanie małej bitmapy w grafice żółwia. Jak pomyślałem tak też i uczyniłem. Kod skryptu wygląda następująco:

from PIL import Image # import klasy Image z modułu PIL (potrzebne do obsługi ładowania grafiki) import turtle as tr # import modułu turtle do rysowania grafiki żółwia potrzebnej img = Image.open("Einstein.jpg") # tutaj ładuję plik graficzny, który będzie rysowany piksel po pikselu img = img.resize((100,100)) # zmiana rozmiaru bitmapy do rozsądnych wymiarów img_data = img.getdata() # pobieranie kolorów poszczególnych pikseli bitmapy def drawLine(move,angle, c=None): # funkcja, która będzie odpowiedzialna za rysowanie pikseli if c != None: # gdy kolor nie jest równy None to tr.pencolor(c[0] / 255, c[1] / 255, c[2] / 255) # ustawiaj kolor tr.left(angle) # obrót o zadany kąt tr.forward(move) # ruch do przodu o zadaną wartość tr.speed(0) # ustawiam maksymalną prędkość size = 2 # rozmiar pędzla tr.pensize(size) # ustawienie rozmiaru pędzla tr.left(-90) # ustawienie początkowego położenia żółwia for x in range(img.width): # współrzędne dla x for y in range(img.height): # współrzędne dla y drawLine(size,0,img_data[x + y * img.width][:3]) # rysowanie poszczególnych pikseli drawLine(size,90) # trzeba teraz poprawnie ustawić żółwia w celu rysowania następnej linijki drawLine(size * img.height,90) # to też związane z ustawieniem żółwia w poprawnej pozycji do rysowania następnej linii tr.left(180) # obrót żółwia o 180 stopni d=input("") # a to, żeby okno z grafiką nie znikało po zakończeniu rysowania.

Do działania skryptu potrzebna jest plik graficzny, ja wybrałem plik z wizerunkiem Einsteina. Poniżej zamieszczam krótki filmik działania programu.

Propozycje książek