【问题标题】:How to display Images loaded with Pillow with Pygame in Python 3.7? [duplicate]如何在 Python 3.7 中使用 Pygame 显示用 Pillow 加载的图像? [复制]
【发布时间】:2019-11-20 09:58:20
【问题描述】:

我使用

将图像导入到我的项目中
from PIL import Image
myImage = Image.open("myImageDirectory.png")

所以 myImage 现在被导入为 png 文件。但我想使用 Pygame 将它显示到屏幕上。通常我使用

import pygame
win = pygame.display.set_mode((500, 500))
win.blit(myImage, (50, 50))

现在我得到函数需要一个表面,而不是 png 文件的错误。 有谁知道如何将图像转换为表面或如何显示它?

我还没有尝试太多,因为我没有找到任何可以解决我的问题的方法。

编辑:

What is wrong with this way that I get the error: Couldn't open bg.png

【问题讨论】:

  • 我不明白。你不使用pygame.image.load()的原因是什么
  • 因为你不能用 Pygame 模块导入 png 和 jpg。看到这个:pygame.org/docs/ref/image.html 当你可以告诉我如何导入它时,虽然我很高兴使用 Pygame。
  • 废话,我几乎每天都这样做。从您的链接 "[...] 可以支持以下格式。JPG PNG [...]"
  • 默认只能加载未压缩的BMP图片。不,它不能仅在完整版本中加载 PNG。我发现所有称为 Pillow aka PIL 的完整版本。当我使用 Pygame 导入运行它时,出现错误:无法打开 myImage.png
  • 你能看看上面的图片,请告诉我我做错了什么。 ??????

标签: python pygame png python-imaging-library python-3.7


【解决方案1】:

使用Image.tobytes() 获取图像数据作为字节对象并使用pygame.image.fromstring() 将数据加载到pygame.Surface 对象:

from PIL import Image
import pygame
pilImage = Image.open("myImageDirectory.png")
myImage = pygame.image.fromstring(pilImage.tobytes(), pilImage.size, pilImage.mode)

【讨论】:

    猜你喜欢
    • 2015-03-24
    • 1970-01-01
    • 2020-04-13
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    相关资源
    最近更新 更多