Menu
CoddyTech

Escalar una imagen

Parte de la sección Sprites e imágenes del Journey de Pygame de Coddy. Lección 8 de 36.

El jefe de un nivel debe verse grande, y un contador de vidas necesita naves pequeñas. Los mismos archivos sirven para ambas cosas: el escalado crea una copia redimensionada.

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

scale_by(image, 2) multiplica ambos lados por 2: el jefe de 64 por 64 se convierte en uno de 128 por 128. scale(image, (w, h)) lo deja exactamente en w por h píxeles, aunque eso lo estire.

El escalado es lento en comparación con un blit, y cada copia nueva difumina o bloquea un poco más los píxeles. Escala una sola vez, antes del bucle, desde el archivo original, y dibuja la copia escalada en cada fotograma.

Crea el Rect después del escalado. Un Rect creado a partir de la imagen de 64 por 64 tendría el tamaño antiguo, y center=(320, 150) dejaría al jefe grande descentrado.

challenge icon

Desafío

Fácil
  1. Escala al jefe por 2 antes del bucle y después crea boss_rect a partir de la imagen escalada, centrado en (320, 150).
  2. Crea icon: el barco escalado a (32, 32).
  3. Dibuja icon tres veces, con la esquina superior izquierda en (10, 10), (50, 10) y (90, 10).

Pruébalo tú mismo

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

Todas las lecciones de Sprites e imágenes

Practica por tu cuenta: Playground de Pygame