Menu
CoddyTech

Ridimensionare un'immagine

Fa parte della sezione Sprite e immagini del percorso Pygame di Coddy. Lezione 8 di 36.

Il boss di un livello dovrebbe essere grande, mentre il contatore delle vite ha bisogno di navicelle piccole. Gli stessi file possono fare entrambe le cose: il ridimensionamento crea una copia ridimensionata.

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

scale_by(image, 2) moltiplica entrambi i lati per 2: il boss di 64 per 64 diventa 128 per 128. scale(image, (w, h)) lo rende esattamente di w per h pixel, anche se questo lo deforma.

Il ridimensionamento è lento rispetto a un blit e ogni nuova copia sfoca o rende un po' più spigolosi i pixel. Ridimensiona una sola volta, prima del ciclo, partendo dal file originale, e disegna la copia ridimensionata a ogni fotogramma.

Crea il Rect dopo il ridimensionamento. Un Rect creato a partire dall'immagine di 64 per 64 avrebbe le dimensioni originali e center=(320, 150) sposterebbe il boss grande fuori centro.

challenge icon

Sfida

Facile
  1. Ridimensiona il boss di 2 prima del ciclo, poi crea boss_rect dall’immagine ridimensionata, centrata in (320, 150).
  2. Crea icon: la nave ridimensionata a (32, 32).
  3. Disegna icon tre volte, con l’angolo superiore sinistro in (10, 10), (50, 10) e (90, 10).

Provalo tu

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()

Tutte le lezioni di Sprite e immagini

Esercitati da solo: Playground Pygame