pygame.error: файл не является файлом Windows BMP на m1 Mac под управлением Mac os Monteray

Я осмотрелся, но не нашел никаких решений, которые работают.

Я просто изучаю pygame с помощью учебника: https://www.youtube.com/watch?v=jO6qQDNa2UY&list=WL&index=44&t=1379s

но когда я пытаюсь связать изображение, я получаю сообщение об ошибке: pygame.error: Файл не является файлом Windows BMP.

Я пробовал все, кроме повторной переустановки pygame (предыдущая проблема) или переустановки python.

Вот мой код

      import pygame
import os

pygame.init()
WIDTH, HEIGHT = 900, 500
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("First Game")

WHITE = (255,255,255)
RED = (255,0,0)

FPS = 60

YELLOW_SPACESHIP_IMAGE = pygame.image.load(
    os.path.join('Assets', 'spaceship_yellow.png')).convert()
RED_SPACESHIP_IMAGE = pygame.image.load(
    os.path.join('Assets', 'spaceship_red.png')).convert()

def draw_window():
    WIN.fill((RED))
    WIN.blit(YELLOW_SPACESHIP_IMAGE, (300,100))
    pygame.display.update()

def main():
    clock = pygame.time.Clock()
    run = True
    while run:
        clock.tick(FPS)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
        
        draw_window()
    pygame.QUIT()

if __name__ == "__main__":
    main()

3 ответа

Решение

Вы пытаетесь загрузить spaceship_yellow.png а также spaceship_red.png которые судя по расширениям не s, ваша ошибка

      pygame.error: File is not a Windows BMP file

предполагают, что pygame ожидает файл. pygame.image docs говорит

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

затем перечислите форматы, по-видимому, у вас нет полной поддержки изображений, я думаю, что самое простое решение - преобразовать PNGу вас есть несжатый BMP формат изображения.

Но как создать модуль изображения с полной поддержкой изображений?

Какой конкретный модуль изображения имеется в виду, PIL, Pillow,...?

Превращение изображения в BMP действительно работает, но я бы предпочел по-прежнему иметь полную функциональность pygame. То, что я сделал, чтобы наконец заставить его работать, было из ветки здесь . Я вставил это в терминал, чтобы он заработал:

      python3 -m pip install git+https://github.com/nelsonlove/pygame.git
Другие вопросы по тегам