2013-03-21 4 views
4

При попытке загрузить изображение в другую папку, я получаю ...ошибка при использовании pygame.image.load()

pygame.error: Не удалось открыть спрайты/testtile.png

I могут загружать файлы .png просто отлично, если они находятся в одном каталоге, но как только они находятся в другой папке, я получаю эту ошибку.

Я знаю, что у python есть доступ к этой другой папке, потому что я не получаю никаких ошибок при импорте файлов .py из сложенных.

Когда я пытаюсь загрузить pygame.image.get_extended, он возвращает 0, но загрузка .png-файлов из одного и того же каталога не дает мне никаких проблем, поэтому я не думаю, что это вызывает эту проблему.

Я, кстати, бегу PyCharm, и подобные вещи всегда кажутся мне неприятностями с этой IDE. Я даже не думаю, что это проблема с pygame. Не знаю, что делать в этот момент.

FOLDER СТРУКТУРА:

скрипты/GraphicsDriver.py

спрайты/testtile.png

водитель пытается получить доступ к файлу testile.png

ответ

3

ли каталог спрайтов в с помощью GraphicsDriver.py? Вы можете столкнуться с некоторыми проблемами с загрузчиком изображений PyGame. Он ищет файлы в том же каталоге, в котором был инициализирован PyGame. Используйте 'os.path.join', чтобы указать его на абсолютный путь к вашему файлу.

Обычно я пишу свой собственный маленький загрузчик изображений вокруг него, так как он предлагает немного большую гибкость процессу. Что-то вроде этого, которое вернет изображение и прямоугольник:

def load_image(name, colorkey = None): 
    """loads an image and converts it to pixels. raises an exception if image not found""" 
    fullname = os.path.join('data', name) 
    try: 
     image = pygame.image.load(fullname) 
    except pygame.error, message: 
     print 'Cannot load image:', name 
     raise SystemExit, message 
    image = image.convert() 
    # set the colorkey to be the color of the top left pixel 
    if colorkey is not None: 
     if colorkey is -1: 
      colorkey = image.get_at((0,0)) 
     image.set_colorkey(colorkey, RLEACCEL) 
    return image, image.get_rect() 

Надеюсь, это поможет.

+0

Благодарим за помощь. Я реализовал ваш метод и запускал его как «testtile, testtile_rect = load_image ('testtile.png')». Это возвращает «Не удалось открыть data \ testtile.png» и «Не удается загрузить изображение: testtile.png» – bilbs

+0

имя_файла = os.path.join ('data', name) можно изменить на fullname = os.path.join («спрайты», имя) извините за путаницу. Я вытащил этот код из одного из моих сценариев, где у меня были мои изображения в каталоге данных. – ecline6

+0

Да, я попробовал несколько разных каталогов, я понял, что данные были заполнителями. К сожалению, он все равно возвращает ту же ошибку. – bilbs