Grafika żółwia - rysowanie małej bitmapy

Stronę tą wyświetlono już: 327 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:

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

Komentarze