Bilder in Pygame skalieren

Maxim Maeder 15 Februar 2024
  1. Bild in Pygame laden
  2. Bild in Pygame skalieren
  3. Bild in Pygame proportional skalieren
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:

Bild in Pygame skalieren

Maxim Maeder avatar Maxim Maeder avatar

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

Verwandter Artikel - Pygame Image