在Pygame中旋转图像并保持平滑边缘

4
我想要旋转一张图片并且保持边缘的平滑。
这是原始图片的样子: 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

我做错了什么吗?


(这里保留了HTML标签)

不确定在Pygame中如何实现,但我认为你需要研究抗锯齿技术。 - Fred Larson
谢谢!我发现我需要看抗锯齿,但我找不到任何关于Pygame的材料来处理这个问题。 - mr.Shu
3个回答

6
尝试使用缩放比例为1.pygame.transform.rotozoom。它说它被过滤了,我认为这意味着AA(抗锯齿)。

需要这个来旋转带有抗锯齿的文本。非常感谢过去的朋友。 - Mark E

1
rotozoom的问题在于图像的边缘只接触矩形而不是所有外部部分,这意味着如果您有一艘船,那么凹陷的边缘看起来很好,只有更宽的部分会出现锯齿状问题。我通过去Photoshop并将我的PNG文件缩放2个像素(取决于您的图像,可能需要尝试不同的缩放因子)来解决这个问题,这样我仍然具有相同的图像尺寸,但真实的图像(彩色像素)将不会在旋转时接触图像的矩形。

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接