web-dev-qa-db-ja.com

PyGame-ロードされた画像のサイズを取得する

こんにちは、似たような質問があったと思うかもしれませんが、私のものは thisとはかなり異なります

ディレクトリから画像を読み込もうとしていますが、画面サイズを(自動的に)「背景」として読み込む画像のサイズに設定しています。

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の方法で解決しようと思ったのですが、理解できないようです。何か助けはありますか?

ありがとう:)

12

サーフェスでconvert()を使用する前に、画面をset_mode()で初期化する必要があります。

画像を読み込んでset_mode()の前にサイズを取得できますが、convert()を使用する必要がありますafter次のように表示を初期化します。

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 
12
furas