Raspberry pi pygame не может открыть image.PNG

#python #pygame #raspberry-pi

#python #pygame #raspberry-pi

Вопрос:

Я использую Raspberry Pi 4 B с сенсорным экраном. В качестве ОС я использую ОС Raspberry Pi с рабочим столом. В настоящее время я работаю над цифровым помощником. Я написал код на своем ПК с Windows, но хочу запустить помощника на своем Raspberry pi. Но когда я запускаю программу, я получаю следующую ошибку:

pygame.ошибка: не удалось открыть файл image.PNG

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

 import pygame
pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode([800, 480])
pygame.display.set_caption('P.I.A.')
screen_icon = pygame.image.load('image.PNG')
pygame.display.set_icon(screen_icon)
 

Изображение.PNG находится в том же каталоге, что и сама программа. Что меня действительно беспокоит, так это то, что код отлично работает на моем ПК с Windows и совсем не работает на моем raspberry pi.
Я могу открыть изображение.PNG с помощью программы просмотра изображений.

Я попытался переключить PNG на JPG, а также изменил название PNG. Оба не сработали.

Есть идеи, как я могу решить эту проблему?

Редактировать: теперь я также попытался изменить рабочий каталог и попытался использовать os.path.join() . Оба не сработали. Единственное отличие заключалось в том, что в нем был указан путь к изображению, когда я использовал вариант 2.

Комментарии:

1. Возможно, вам больше повезет с этим вопросом в стеке Raspberry Pi

2. сначала попробуйте с. /full/path/to/image.png Позже вы можете найти вопрос, который как использовать что-то подобное os.path.abspath(os.dirname(__file__)) , чтобы получить полный путь к запущенному скрипту и использовать его для создания полных путей к изображениям и другим ресурсам.

3. и проверьте, действительно ли у вас 'image.PNG' есть, потому 'image.png' что это другое имя. И проверьте в любом средстве просмотра изображений, можете ли вы открыть этот файл.

Ответ №1:

Я бы рекомендовал вам попробовать изменить относительный путь на абсолютный путь к файлу. Пример: pygame.image.load('/home/user/Desktop/image.PNG')

При работе с файлами в Linux стандартным соглашением об именовании являются расширения файлов в нижнем регистре: «.png», «.jpg». etc. Я бы проверил, чтобы и имя файла, и ваш .load конец были в нижнем регистре «.png» .

Кроме того, если вы запускаете скрипт из командной строки, убедитесь, что вы находитесь в том же каталоге, что и скрипт и изображение. В зависимости от ваших настроек, если вы находитесь в своем /home каталоге и запускаете скрипт на своем /home/username/Desktop like /home/username/Desktop/coolgame.py , тогда скрипт может искать файл в вашем /home каталоге.

Если ничего из этого не работает, самое простое, что можно сделать при отладке ошибок файлов / каталогов, — это посмотреть, куда именно смотрит программа. Перед запуском image.load просмотрите все файлы в рабочем каталоге, пока вы еще в программе. Вероятно, самый простой способ сделать это os.listdir(dir) . Я бы порекомендовал что-то вроде этого:

 pygame.display.set_caption('P.I.A.')
import os
print(os.listdir('.'))
screen_icon = pygame.image.load('image.PNG')
 

Удачи!