如何解决此错误:TypeError:参数1必须是游戏。表面,不是PngImageFi

2024-09-22 16:31:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我曾经使用Python 2.7pygame,并且,为了将PNG和blit加载到一个曲面,以下代码就足够了:

sprites = pygame.image.load('sprites.png')
background.blit(sprites, (0, 0), rect)

现在我使用Python 3,这意味着我需要加载PIL来处理PNG文件。我的新代码如下:

^{pr2}$

但当我运行新代码时,在最后一行出现了以下错误:

TypeError: argument 1 must be pygame.Surface, not PngImageFile

因此,sprites变量是PngImageFilebackground.blit()需要一个pygame.Surface对象作为输入:

  • 我是否应该将PngImageFile转换为pygame.Surface?我找不到任何方法来做这个。在
  • 有没有更好的方法来blit一个PIL图像到一个pygame.Surface对象?在

我一直在努力寻找StackOverflow的答案,所以我确信这不是一个重复的问题。欢迎提出任何意见或建议。在


Tags: 对象方法代码imagepilpngloadsurface
1条回答
网友
1楼 · 发布于 2024-09-22 16:31:29
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)

因为我运行的Python3没有任何运气的PIL,我不完全确定这是否能开箱即用。因为您需要获得sprites对象的文本表示,而不是数据数组。在

以下可能有助于您将PIL对象转换为字符串?在

或者干脆试试:

^{pr2}$

相关问题 更多 >