[Tutor PyCZ] Nahrani obrazku 8 //

geon geon na post.cz
Středa Srpen 31 14:28:54 CEST 2005


STA napsal(a):

> Ahoj tak jsem si stahnul modul pygame, ale porad enchapu nahrani 
> obrazku ze souboru. Poradi mi nekdo jak ho jednoduse nahrat?
> Dekuji za pripadne odpovedi ; /

Doporučuji plně projít jeden až dva tutoriály čistě ohledně jazyka. Na 
webu www.py.cz je jich spousty. Myslím že není ani tak důležité, abys 
uměl natáhnout obrázek, ale abys věděl, co děláš. Proč je tam zrovna to 
a ne ono. Rozhodně bys měl umět "funkce" a "třídy". Bez nich se dál 
nedostaneš ;-).

Pokud ti jde skutečně jen o natažení obrázku, jednodušeji je to 
vysvětlováno v "Posuň to" než v "Opička...". Nicméně i zde jsou třebas 
"funkce" a "třídy". Pokud se jím nebudeš chtít prokousávat řádku po 
řáídku, je možné, že nepochopíš spousty ze základů jazyka i pygame.

Takže to co hledáš, je

hrdina = pygame.image.load('hrdina.jpg')

Jen připomínám, ať si dáš pozor na cesty, obrázek by měl ležet ve 
stejném adresáři nebo musí být s plnou cestou. Obrázek můžeš použít 
jakýkolik, nebo si ho stáhnout ze stejné stránky tutoriálu.

Celý kod pro načtení obrázku. (bez "funkcí" a "tříd"! ) :-) :

# -*- coding: cp1250 -*-

# import a inicializace
import pygame, sys
from pygame.locals import *
pygame.init()

# nastavení konstant
REZIM=(640, 480)
umisteniObrazku=(0,0)


obrazovka = pygame.display.set_mode(REZIM)
hrdina = pygame.image.load('hrdina.jpg') #načtení obrázku
obrazovka.blit(hrdina, umisteniObrazku) # vykreselení na obrazovkku

pokracovat=1

while pokracovat:                 # téměř do nekonečna
   for udalost in pygame.event.get():  # o tomto více v tutoriálu
      if udalost.type ==QUIT:          # ošetření Alt+F4
           pokracovat=0
   pygame.display.update()          # aktualizace obrazovky
   pygame.time.delay(100)           # cekej


pygame.quit()
print "Ted jsi zavrel okno. A to je vse :-)"

Není to moc jednoduché, co? V jiných GUI jde pouhé načtení obrázku 
daleko jednodušeji. Pygame ale je herní modul, takže následně je zase 
lehčí ovládat pohyb obrázku a případné střílení (kolize s jinými 
obrázky),....

Pro názornost přikádám jak by to bylo v Tkinteru.
import Tkinter

root=Tkinter.Tk()

platno=Tkinter.Canvas()
platno.pack()

obrazek = Tkinter.PhotoImage(file="hrdina.gif")
polozka = platno.create_image(100, 100, image=obrazek)

root.mainloop()

Vsimni si, ze jsem predelal jpg na gif, protoze Tkinter bohuzel sám o 
sobě nepodporuje jpg. Vestavěnou podporu ma pro gif a pgm. Pokud chceš 
používat i jiné formáty, potřebuje modul PIL (Image) (nutno stáhnout), 
což je mimochodem skvělá knihovna na práci s  obrázky (převod mezi 
formáty a úprava obrázku - třebas u všech obrázků ve složce změníš 
rozměry nebo hloubku ...). Použití s Tkinterem pak vypadá takto:

#---------------jpg-------------------------------------


import Tkinter, Image, ImageTk

root=Tkinter.Tk()

platno=Tkinter.Canvas()
platno.pack()

obrazekRaw = Image.open("hrdina.jpg")
obrazek = ImageTk.PhotoImage(obrazekRaw)
polozka = platno.create_image(100, 100, image=obrazek)

root.mainloop()


Hezké počtení, nedávám k příkladům žádný komnetář. Kdyby něco nebylo 
jasné nebo nefugovalo, tak se ptej :-)

geon


------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/tutor/attachments/20050831/f6a5f17f/attachment.htm


Další informace o konferenci Tutor