Pygame PNG图像看起来很糟糕

时间:2016-02-13 18:58:57

标签: python-3.x pygame

我跟随this guide尝试在Pygame窗口中显示基本的PNG图像。我的图像是一个简单的150x150绿色球,没有透明度,称为ball.png,与我的Python脚本位于同一目录中:

Ball.png

但是,当我启动程序时,出现的所有内容都是正确尺寸和位置的错误图像:

enter image description here

我使用此代码显示图像(与上面链接的教程中给出的代码相同):

import pygame
import os

_image_library = {}
def get_image(path):
        global _image_library
        image = _image_library.get(path)
        if image == None:
                canonicalized_path = path.replace('/', os.sep).replace('\\', os.sep)
                image = pygame.image.load(canonicalized_path)
                _image_library[path] = image
        return image

pygame.init()
screen = pygame.display.set_mode((400, 300))
done = False
clock = pygame.time.Clock()

while not done:
        for event in pygame.event.get():
                if event.type == pygame.QUIT:
                        done = True
        screen.fill((255, 255, 255))
        screen.blit(get_image('ball.png'), (20, 20))
        pygame.display.flip()
        clock.tick(60)

为什么会这样?代码中有缺陷吗?我尝试用不同的PNG替换PNG,但这只会改变毛刺图像的外观 - 图像仍然无法正确显示。我使用的是OS X 10.11 El Capitan,Python 3.5.0和Pygame 1.9.2。

1 个答案:

答案 0 :(得分:4)

正如@DJ McGoathem所说,由于SDL_image库的版本不同,Pygame已经知道El Capitan的问题; Pygame需要1.2.10版本,但El Capitan需要1.2.12。这可以通过降级这个库来解决,我这样做(需要Brew):

  1. this code复制到名为sdl_image.rb
  2. 的文件中
  3. 在保存该文件的目录中打开终端
  4. 运行brew remove sdl_image以卸载库的不兼容版本
  5. 运行brew install -f sdl_image.rb以安装库的兼容版本
  6. 在此之后,我的程序正确渲染图像。