图像在Pygame中旋转,同时保持光滑的边缘

时间:2012-11-07 14:45:12

标签: python image pygame smooth

我想旋转图像并保持边缘平滑。

这就是它的样子

original image

旋转后

rotated image

我使用的代码看起来像

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

我有什么问题吗?

3 个答案:

答案 0 :(得分:5)

尝试使用pygame.transform.rotozoom,其比例为1.它表示已过滤,我认为这意味着AA。

答案 1 :(得分:1)

rotozoom的问题在于图像的边缘接触矩形而不是所有的外部部分,这意味着如果你有一艘船,例如,凹进的边缘看起来会很好,只有更宽的部分会有别名问题。我设法通过去Photoshop和我的PNG文件缩放2个像素来解决这个问题(取决于你的图像,你可能需要尝试不同的缩放因子),这样我仍然有相同的图像' s尺寸但实际图像(彩色像素)在旋转时不会触摸图像的矩形。

答案 2 :(得分:0)

但是,Rotozoom似乎并没有平滑表面的边缘。也就是说,图像的内部部分看起来不错,但边缘仍然是非抗锯齿的。