Menu
CoddyTech

Redimensionner une image

Fait partie de la section Sprites et images du Journey Pygame de Coddy. Leçon 8 sur 36.

Le boss d’un niveau doit paraître imposant, et un compteur de vies a besoin de petits vaisseaux. Les mêmes fichiers peuvent servir aux deux : le redimensionnement crée une copie à une autre taille.

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

scale_by(image, 2) multiplie les deux côtés par 2 : le boss de 64 par 64 devient un boss de 128 par 128. scale(image, (w, h)) lui donne exactement w par h pixels, même si cela l’étire.

Le redimensionnement est lent par rapport à un blit, et chaque nouvelle copie rend les pixels un peu plus flous ou pixélisés. Redimensionne une seule fois, avant la boucle, à partir du fichier original, puis dessine la copie redimensionnée à chaque image.

Crée le Rect après le redimensionnement. Un Rect créé à partir de l’image de 64 par 64 aurait l’ancienne taille, et center=(320, 150) placerait le grand boss hors du centre.

challenge icon

Défi

Facile
  1. Agrandis le boss par 2 avant la boucle, puis crée boss_rect à partir de l’image agrandie, centrée en (320, 150).
  2. Crée icon : le vaisseau redimensionné en (32, 32).
  3. Dessine icon trois fois, avec son coin supérieur gauche en (10, 10), (50, 10) et (90, 10).

Essayez vous-même

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

Toutes les leçons de Sprites et images

Entraînez-vous par vous-même : Playground Pygame