【问题标题】:Can't load images in pygame无法在pygame中加载图像
【发布时间】:2020-03-31 19:26:39
【问题描述】:

我正在尝试使用 pygame.image.load() 函数加载 .png 图像。我尝试加载的图像与我正在运行的程序文件位于相同的相对目录中。我遵循了以前使用过的相同语法并在教程中找到了,但它仍然不起作用。

代码:

import pygame
image = pygame.image.load("ImageFolder/TestImage.png")

文件目录(还不能嵌入图片,所以这里有一个链接):

https://gyazo.com/5b8c20ca6058db7629caae602adbcb35

错误信息:

pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
  File "c:/Users/dougl/OneDrive/Skolgrejer/Programmering/Program/TestFolder/TestFile.py", line 3, in <module>
    image = pygame.image.load("ImageFolder/TestImage.png")
pygame.error: Couldn't open ImageFolder/TestImage.png
PS C:\Users\dougl\OneDrive\Skolgrejer\Programmering\Program> 

使用:Python 3.7.4 32 位,pygame 1.9.6

【问题讨论】:

  • 改用TestFolder/ImageFolder/TestImage.png。如果您使用的是 IDE,那么您的程序可能会从另一条路径开始。您的项目似乎从 'C:\Users\dougl\OneDrive\Skolgrejer\Programmering\Program' 开始

标签: python pygame


【解决方案1】:

很可能您的程序未在您的 ImageFolder 所在的同一目录中执行。

这可以很容易地检查:

import os.path

dir_path = os.path.dirname( os.path.realpath( __file__ ) )
print( "Current dir is [%s]" % dir_path )

您还可以使用os.chdir() 来确保您的代码在加载开始之前在正确的位置运行:

import os

INSTALL_DIR = "c:/Users/dougl/OneDrive/Skolgrejer/Programmering/Program/TestFolder/"

os.chdir( INSTALL_DIR )

...也许检查您的目录是否在您认为的位置,并优雅地处理它:

import os.path

IMAGE_DIR = 'ImageFolder'

if ( not os.path.isdir( IMAGE_DIR ) ):
    # TODO: handle error
    pass

【讨论】:

  • 以这种方式使用整个目录结果是可行的,但我仍在寻找一种使用相对目录来启动文件的解决方案,以便我可以将其导出给其他用户。
  • @TehDogge - 是的,但现在您正在使用某种 IDE,如 PyCharm、VSC 等。一旦打包,可执行文件将在正确的位置启动。因此,在执行os.chdir() 之前,您应该首先检查ImageFolder 是否不可用,因为这可能只是从IDE 运行的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
相关资源
最近更新 更多