python - negro - La imagen gira en Pygame mientras mantiene los bordes suaves
marcadores python (3)
Me gustaría rotar una imagen y también mantener los bordes lisos.
Así es como esto luce
Y después de rotar
El código que estoy usando parece
def rot_center(self, image, angle):
"""rotate an image while keeping its center and size"""
orig_rect = image.get_rect()
rot_image = pygame.transform.rotate(image, angle)
rot_rect = orig_rect.copy()
rot_rect.center = rot_image.get_rect().center
rot_image = rot_image.subsurface(rot_rect).copy()
return rot_image
¿Hay algo que estoy haciendo mal?
Sin embargo, Rotozoom no parece suavizar los bordes de una superficie. Es decir, la parte interna de la imagen se verá bien, pero el borde aún no tiene antialias.
El problema con el rotozoom es cuando los bordes de la imagen tocan el rectángulo y no todas las partes externas, eso significa que si tienes un barco, por ejemplo, los bordes hundidos se verán bien, solo las partes más anchas tendrán el problema de aliasing. Logré solucionarlo yendo al photoshop y escalando en mi archivo PNG en 2 píxeles (depende de tu imagen, tal vez tendrás que experimentar con diferentes factores de escala), de esta manera, aún tengo las dimensiones de la misma imagen pero la imagen real ( los píxeles de color) no tocarán el rectángulo de la imagen mientras gira.
Intenta usar pygame.transform.rotozoom con una escala de 1.
Dice que está filtrado, creo que eso significa AA.