Bilder in Pygame skalieren
In diesem Tutorial lernen Sie, wie Sie Oberflächen in Pygame skalieren.
Bild in Pygame laden
Bevor wir das Bild transformieren können, müssen wir die Methode image.load()
von Pygame importieren. Wir müssen ihm einen Pfad zu einem Bild geben und sicherstellen, dass jpg
, png
und gif
unterstützt werden.
Diese Funktion gibt ein neues Surface zurück, das wir bereits auf den Bildschirm leuchten konnten, aber es könnte sein, dass das Bild zu groß oder zu klein ist.
Wie Sie Bilder skalieren, zeigen wir Ihnen im nächsten Teil.
image = pygame.image.load("img.jpg")
Bild in Pygame skalieren
Wir verwenden die Funktion pygame.transform.scale
, um ein Bild zu skalieren. Zuerst müssen wir die Oberfläche beim Skalieren übergeben und dann die neue Breite und Höhe als Iterable (Liste oder Tupel).
Diese Funktion gibt die skalierte Oberfläche zurück. Deshalb überschreiben wir die alte Oberfläche.
Dadurch wird das Bild gestreckt, so dass es ziemlich verzerrt aussehen könnte, also schauen wir uns jetzt die proportionale Skalierung an.
image = pygame.transform.scale(image, (width, height))
Bild in Pygame proportional skalieren
Pygame bietet keine Möglichkeit, proportional zu skalieren, aber wir können dies selbst mit dem Code tun, den Sie unten finden. Zuerst importieren wir das Bild und speichern es in der image-Variablen, und dann holen wir uns mit der Methode get_rect()
das rect
der Bildoberfläche.
Dies gibt ein Array mit der x- und y-Position sowie der Breite und Höhe zurück. Wir spleißen es, weil wir nur die Breite und Höhe brauchen.
Danach definieren wir einen Skalierungsmultiplikator, um zu bestimmen, wie kleiner oder größer das Ausgabebild sein wird. In unserem Fall wird es ein Drittel der ursprünglichen Größe sein.
Wir fahren fort, indem wir das Bild transformieren, wir stellen zuerst die zu skalierende Oberfläche bereit, und dann stellen wir ein Array bereit, in dem wir die Breite und Höhe mit der Größe multiplizieren und beide Zahlen in ganze Zahlen umwandeln. Das folgende Snippet skaliert es unter Beibehaltung seines Verhältnisses.
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)))
Vollständiger Code:
# 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)
Ausgang:
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