簡體   English   中英

PIL的問題

[英]problems with PIL

今天我嘗試將 pygame 的image.load()切換到 Pil 的Image.open()但是(像往常一樣)我遇到了問題。 在代碼的開頭,我有這個帶有 pygame 的image.load()片段:

class Gamesprite():
    def __init__(self,img,x,y,width,height,speed):
        sprite.Sprite.__init__(self)
        self.image = transform(image.load(img), (width, height))

下面的代碼片段是我實驗添加image = Image.open('image.png')但代碼崩潰的 4 個片段之一(左、右、上)。

class Player(Gamesprite):
    def control(self):
        keys=key.get_pressed()
        if keys[K_LEFT]:
            hero_img = Image.open('hero_left.png')
            self.rect.x -= self.speed
            for wall in list_wall:
                if sprite.collide_rect(self,wall):
                    self.rect.x += self.speed*1.1

啟動代碼后,我得到:

File "e:\VSCode projects\lab2.1.py", line 60, in <module>
    player = Player(hero_img,     tiles,    tiles,    int(tiles*0.87),tiles, tiles//10)
  File "e:\VSCode projects\lab2.1.py", line 15, in __init__
    self.image = transform(image.load(img), (width, height))
TypeError: not a file object

如果您知道如何解決此問題,請將圖像保存在變量“hero_img”中,並在按下按鈕的同時使角色切換圖像,請幫助! :(

從官方文檔來看,pygame的image.load的結果是一個pygame.Surface對象。 PIL 的Image.open函數的結果是一個PIL.Image.Image對象。 它們不可互換。 可以嘗試將PIL圖像轉成數組,然后復制到pygame表面。

以下是一些有用的鏈接:

https://stackoverflow.com/a/1095878/5166365 https://www.pygame.org/docs/ref/surfarray.html#pygame.surfarray.blit_array

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM