PIL 的问题
problems with PIL
今天我尝试将 pygame 的 image.load()
换成 Pil 的 Image.open()
,但是(像往常一样)我遇到了问题。在代码的开头,我有这个片段 pygame's 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))
下面的代码片段是 4 个片段(左、右、上、下)之一,我在其中实验性地添加了 image = Image.open('image.png')
但代码崩溃了。
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://www.pygame.org/docs/ref/surfarray.html#pygame.surfarray.blit_array
今天我尝试将 pygame 的 image.load()
换成 Pil 的 Image.open()
,但是(像往常一样)我遇到了问题。在代码的开头,我有这个片段 pygame's 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))
下面的代码片段是 4 个片段(左、右、上、下)之一,我在其中实验性地添加了 image = Image.open('image.png')
但代码崩溃了。
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://www.pygame.org/docs/ref/surfarray.html#pygame.surfarray.blit_array