Saludos, he buscado en la documentación de pygame pero no
encontré una función para hacer eso...
Aún así, como a mí también me interesaba "ver" la máscara
de una superficie, escribí esta función que construye
una superficie en blanco y negro a partir de una máscara
de colisión.
Cabe aclarar que se puede optimizar mucho, pero es irrelevante
ahora, esto es solo ilustrativo:
- Código: Seleccionar todo
def make_surface_from_mask(mask):
"""
Genera una nueva superficie representando una mascara de bits.
"""
white = (255, 255, 255)
black = (0, 0, 0)
width, height = mask.get_size()
# inicia una superficie completamente negra.
surface = pygame.surface.Surface((width, height))
surface.fill(black)
# imprime en blanco los bits colisionables.
for x in range(width):
for y in range(height):
if mask.get_at((x, y)):
surface.set_at((x, y), white)
return surface
también dejo un código de ejemplo que puede servir para
probar la función:
- Código: Seleccionar todo
import pygame
screen = pygame.display.set_mode((320, 240))
# carga la imagen original.
image = pygame.image.load('example.png')
# genera la mascara y la superficie en blanco y negro.
mask = pygame.mask.from_surface(image)
mask_surface = make_surface_from_mask(mask)
# Genera el archivo con la mascara de "example.png"
# y la guarda en el disco.
pygame.image.save(mask_surface, "mascara.bmp")
Saludos.