我过去经常使用Python 2.7和pygame,为了将PNG和blit加载到表面,这段代码就足够了:
sprites = pygame.image.load('sprites.png')
background.blit(sprites, (0, 0), rect)现在我使用Python 3,这意味着我需要加载PIL来处理PNG文件。我的新代码如下所示:
from PIL import Image
sprites = Image.open('sprites.png')
background.blit(sprites, (0, 0), rect)但是,当我运行新代码时,会在最后一行得到以下错误:
TypeError:参数1必须是pygame.Surface,而不是PngImageFile
因此,sprites变量是一个PngImageFile,background.blit()需要一个pygame.Surface对象作为输入:
PngImageFile转换成pygame.Surface吗?我找不到任何办法来做这个。blit到pygame.Surface对象?我在StackOverflow上努力寻找答案,所以我很确定这不是一个重复的问题。欢迎提出任何意见或建议。
发布于 2014-02-20 13:53:19
from PIL import Image
sprites = Image.open('sprites.png')
pygameImage = pygame.image.fromstring(str(buffer(sprites)), win.size, 'RGB', False)
background.blit(pygameImage, (0, 0), rect)由于我在PIL上没有任何运气就运行了Python3,所以我不完全确定这是否会开箱即用。因为您需要获取sprites对象的文本表示,而不是数据数组。
下面可以帮助您将PIL对象转换为字符串?
或者简单地尝试:
from PIL import Image
sprites = pygame.image.load(Image.open('sprites.png'))
background.blit(sprites, (0, 0), rect)https://stackoverflow.com/questions/21909435
复制相似问题