Menu
CoddyTech

Ein Bild skalieren

Teil des Abschnitts Sprites und Bilder der Pygame-Journey von Coddy. Lektion 8 von 36.

Der Boss eines Levels sollte groß aussehen, und eine Lebensanzeige braucht kleine Raumschiffe. Dieselben Dateien können beides: Durch Skalieren wird eine verkleinerte oder vergrößerte Kopie erstellt.

boss = pygame.transform.scale_by(boss, 2)
icon = pygame.transform.scale(ship, (32, 32))

scale_by(image, 2) multipliziert beide Seiten mit 2: Aus dem 64 mal 64 Pixel großen Boss wird ein 128 mal 128 Pixel großer Boss. scale(image, (w, h)) legt die Größe exakt auf w mal h Pixel fest, selbst wenn das Bild dadurch verzerrt wird.

Skalieren ist im Vergleich zu einem Blit langsam, und jede neue Kopie lässt die Pixel ein wenig stärker verschwimmen oder blockig erscheinen. Skaliere einmal vor der Schleife ausgehend von der Originaldatei und zeichne in jedem Frame die skalierte Kopie.

Erstelle das Rect nach dem Skalieren. Ein Rect, das aus dem 64 mal 64 Pixel großen Bild erstellt wird, hätte noch die alte Größe, und center=(320, 150) würde den großen Boss nicht mittig platzieren.

challenge icon

Aufgabe

Einfach
  1. Skaliere den Boss vor der Schleife um den Faktor 2 und erstelle anschließend boss_rect aus dem skalierten Bild, zentriert bei (320, 150).
  2. Erstelle icon: das auf (32, 32) skalierte Schiff.
  3. Zeichne icon dreimal, mit der linken oberen Ecke bei (10, 10), (50, 10) und (90, 10).

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Boss Fight")
clock = pygame.time.Clock()

boss = pygame.image.load("assets/images/boss.png").convert_alpha()
boss_rect = boss.get_rect(center=(320, 150))
ship = pygame.image.load("assets/images/ship.png").convert_alpha()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((20, 22, 40))
    screen.blit(boss, boss_rect)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Alle Lektionen in Sprites und Bilder

Übe selbstständig: Pygame-Playground