Подтвердить что ты не робот

PyGame - получение размера загруженного изображения

Привет, хотя вы могли бы подумать, что есть аналогичный вопрос, мой отличается от этого.

Я пытаюсь загрузить изображение из каталога и установить размер экрана (автоматически) на размер загружаемого изображения как "фон".

import pygame
import sys
from pygame.locals import *

image_resources = "C:/Users/user/Desktop/Pygame App/image_resources/"

class load:
    def image(self, image):
        self.image = image
        return (image_resources + image)
    def texture(self, texture):
        self.texture = texture
        return (image_resources + texture)

bg = load().image("bg_solid_black.jpg")

pygame.init()

#screen = pygame.display.set_mode((width,height),0,32)

#background = pygame.image.load(bg).convert()

#width = background.get_width()
#height = background.get_height()

Изображение, загруженное с моим классом "load()", устанавливается в переменную "bg", и я хочу использовать размер того, что я загружаю как "bg", чтобы определить размер окна. Если вы попытаетесь переместить

background = pygame.image.load(bg).convert()

width = background.get_width()
height = background.get_height()

Кроме того:

screen = pygame.display.set_mode((width,height),0,32)

PyGame возвращает ошибку, в которой указано, что режим отображения не установлен. Если я сделаю это так:

screen = pygame.display.set_mode((width,height),0,32)

background = pygame.image.load(bg).convert()

width = background.get_width()
height = background.get_height()

конечно, это неверно, поскольку переменные "width" и "height" не определены для использования "pygame.display.set_mode()".

Я не могу понять это, хотя я и решаю с помощью OO, но я просто не могу понять это. Любая помощь?

Спасибо:)

4b9b3361

Ответ 1

Перед использованием convert() на любой поверхности экран должен быть инициализирован с помощью set_mode().

Вы можете загрузить изображение и получить его размер до set_mode(), но convert() нужно использовать после инициализации дисплея, например:

import pygame

pygame.init()

image = pygame.image.load("file_to_load.jpg")

print(image.get_rect().size) # you can get size

screen = pygame.display.set_mode(image.get_rect().size, 0, 32)

image = image.convert() # now you can convert