Pygame で画像をスケーリングする
このチュートリアルでは、Pygame でサーフェスをスケーリングする方法を説明します。
Pygame に画像を読み込む
画像を変換する前に、Pygame の image.load()
メソッドをインポートする必要があります。 画像へのパスを指定し、jpg
、png
、および gif
がサポートされていることを確認する必要があります。
この関数は、既に画面にブリットできる新しい Surface を返しますが、画像が大きすぎるか小さすぎる可能性があります。
次のパートで画像をスケーリングする方法を紹介します。
image = pygame.image.load("img.jpg")
Pygame での画像のスケーリング
pygame.transform.scale
関数を使用して画像をスケーリングします。 まず、スケーリング時にサーフェスを渡し、次に新しい幅と高さをイテラブル (リストまたはタプル) として渡す必要があります。
この関数は、スケーリングされたサーフェスを返します。 そのため、古いサーフェスを上書きします。
これにより画像が引き伸ばされるため、かなり歪んで見える可能性があるため、比例スケーリングを見てみましょう。
image = pygame.transform.scale(image, (width, height))
Pygame で画像を比例的にスケーリングする
Pygame は比例してスケーリングする方法を提供しませんが、以下に示すコードを使用して自分で行うことができます。 まず、画像をインポートして image 変数に保存し、次に get_rect()
メソッドで画像表面の rect
を取得します。
これは、x と y の位置と幅と高さの配列を返します。 必要なのは幅と高さだけなので、スプライスします。
その後、スケール乗数を定義して、出力イメージをどれだけ小さくまたは大きくするかを決定します。 私たちの場合、元のサイズの 3 分の 1 になります。
画像の変換を続けます。まず、スケーリングするサーフェスを提供します。次に、幅と高さにサイズを掛けて両方の数値を整数に変換する配列を提供します。 次のスニペットは、比率を維持しながらスケーリングします。
image = pygame.image.load("img.jpg")
ext = image.get_rect()[2:4]
size = 0.3
image = pygame.transform.scale(image, (int(ext[0] * size), int(ext[1] * size)))
完全なコード:
# Imports
import sys
import pygame
# Configuration
pygame.init()
fps = 60
fpsClock = pygame.time.Clock()
width, height = 640, 480
screen = pygame.display.set_mode((width, height))
image = pygame.image.load("image.png")
ext = image.get_rect()[2:4]
size = 0.3
image = pygame.transform.scale(image, (int(ext[0] * size), int(ext[1] * size)))
# Game loop.
while True:
screen.fill((20, 20, 20))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
screen.blit(image, (30, 30))
pygame.display.flip()
fpsClock.tick(fps)
出力:
Hi, my name is Maxim Maeder, I am a young programming enthusiast looking to have fun coding and teaching you some things about programming.
GitHub