gpt4 book ai didi

python - 我如何解决这个错误 : TypeError: argument 1 must be pygame. Surface, not PngImageFile

转载 作者:太空宇宙 更新时间:2023-11-04 06:06:13 30 4
gpt4 key购买 nike

我曾经使用 Python 2.7pygame 加载 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: argument 1 must be pygame.Surface, not PngImageFile

所以 sprites 变量是一个 PngImageFilebackground.blit() 期待一个 pygame.Surface对象作为输入:

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

我在 StackOverflow 上努力寻找答案,所以我很确定这不是一个重复的问题。任何意见或建议都将非常受欢迎。

最佳答案

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)

关于python - 我如何解决这个错误 : TypeError: argument 1 must be pygame. Surface, not PngImageFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21909435/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com