Menu
CoddyTech

Redimensionar uma imagem

Parte da seção Sprites e imagens do Journey de Pygame da Coddy. Lição 8 de 36.

O chefe de uma fase deve parecer grande, e um contador de vidas precisa de naves pequenas. Os mesmos arquivos podem fazer as duas coisas: a escala cria uma cópia redimensionada.

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

scale_by(image, 2) multiplica os dois lados por 2: o chefe de 64 por 64 passa a ter 128 por 128. scale(image, (w, h)) deixa a imagem exatamente com w por h pixels, mesmo que isso a estique.

O redimensionamento é lento em comparação com um blit, e cada nova cópia deixa os pixels um pouco mais borrados ou serrilhados. Redimensione uma vez, antes do loop, a partir do arquivo original, e desenhe a cópia redimensionada a cada quadro.

Crie o Rect depois de redimensionar. Um Rect criado a partir da imagem de 64 por 64 teria o tamanho antigo, e center=(320, 150) deixaria o chefe grande fora do centro.

challenge icon

Desafio

Fácil
  1. Aumente o tamanho do chefe em 2 antes do loop e, em seguida, crie boss_rect a partir da imagem redimensionada, centralizado em (320, 150).
  2. Crie icon: a nave redimensionada para (32, 32).
  3. Desenhe icon três vezes, com o canto superior esquerdo em (10, 10), (50, 10) e (90, 10).

Experimente você mesmo

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 as lições de Sprites e imagens

Pratique por conta própria: Playground de Pygame