Escalar imágenes en Pygame

Maxim Maeder 15 febrero 2024
  1. Cargar imagen en Pygame
  2. Escalar imagen en Pygame
  3. Escalar imagen proporcionalmente en Pygame
Escalar imágenes en Pygame

Este tutorial te enseña cómo escalar superficies en Pygame.

Cargar imagen en Pygame

Antes de que podamos transformar la imagen, necesitamos importar el método image.load() de Pygame. Tendremos que darle una ruta a una imagen y asegurarnos de que se admitan jpg, png y gif.

Esta función devolverá una nueva Surface que ya podríamos mostrar en pantalla, pero podría ser que la imagen sea demasiado grande o demasiado pequeña.

Le mostraremos cómo escalar imágenes en la siguiente parte.

image = pygame.image.load("img.jpg")

Escalar imagen en Pygame

Usamos la función pygame.transform.scale para escalar una imagen. Primero, debemos pasar la superficie al escalar y luego el nuevo ancho y alto como un iterable (lista o tupla).

Esta función devolverá la superficie escalada. Es por eso que sobrescribimos la superficie anterior.

Esto estirará la imagen para que se vea bastante distorsionada, así que veamos ahora la escala proporcional.

image = pygame.transform.scale(image, (width, height))

Escalar imagen proporcionalmente en Pygame

Pygame no proporciona una forma de escalar proporcionalmente, pero podemos hacerlo nosotros mismos con el código que encontrará a continuación. Primero, importamos la imagen y la guardamos en la variable image, y luego obtenemos el rect de la superficie de la imagen con el método get_rect().

Esto devolverá una matriz con la posición x e y y el ancho y alto. Lo empalmamos porque solo necesitamos el ancho y el alto.

Después de eso, definimos un multiplicador de escala para determinar cuán pequeña o grande será la imagen de salida. En nuestro caso, será un tercio del tamaño original.

Continuamos transformando la imagen, primero proporcionamos la superficie a escalar y luego proporcionamos una matriz donde multiplicamos el ancho y la altura con el tamaño y convertimos ambos números en números enteros. El siguiente fragmento lo escalará mientras conserva su proporción.

image = pygame.image.load("img.jpg")

ext = image.get_rect()[2:4]
size = 0.3

image = pygame.transform.scale(image, (int(ext[0] * size), int(ext[1] * size)))

Código completo:

# Imports
import sys
import pygame

# Configuration
pygame.init()
fps = 60
fpsClock = pygame.time.Clock()
width, height = 640, 480
screen = pygame.display.set_mode((width, height))

image = pygame.image.load("image.png")
ext = image.get_rect()[2:4]
size = 0.3

image = pygame.transform.scale(image, (int(ext[0] * size), int(ext[1] * size)))

# Game loop.
while True:
    screen.fill((20, 20, 20))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.blit(image, (30, 30))

    pygame.display.flip()
    fpsClock.tick(fps)

Producción:

escalar imagen en pygame

Maxim Maeder avatar Maxim Maeder avatar

Hi, my name is Maxim Maeder, I am a young programming enthusiast looking to have fun coding and teaching you some things about programming.

GitHub

Artículo relacionado - Pygame Image