用PIL旋转时如何保持图像质量

2024-10-03 02:39:20 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我试图通过用户界面旋转图像,但是我注意到图像质量在每次旋转时都会严重降低。有人知道怎么解决吗?另外,当图像旋转时,每次都会裁剪掉部分图像。在

这是一些照片 之前和之后: http://imgur.com/a/QESKs

代码如下:

def onRotate(self):
    tanTheta = float(hh)/float(ww) 
    theta = math.atan(tanTheta) * 57.2957795 # convert to degrees
    if theta > 0:
        angle = (90 - theta) * -1
        clockwise = True
    elif theta < 0:
        angle = (270 - theta) * -1
        clockwise = False
    else:
        tkMessageBox('Angle not okay', 'Try again!')
    rotated_small = photo_small.rotate(angle) 
    rotated_small.save('small_rotate.jpg')
    self.load_imgfile('small_rotate.jpg')

Tags: 图像selfhttp质量float用户界面照片small
2条回答
rotated_small = photo_small.rotate(angle, resample=Image.BICUBIC, expand=True)

这就要求它使用它现有的最高质量的插值算法,并扩展图像以包含完整的旋转大小,而不是裁剪。文档没有说明背景将填充什么颜色。在

图像是像素的网格。如果旋转它(角度不是90的倍数),则必须将旋转的栅格重新匹配到新的未旋转栅格以显示图像。在这个过程中,有些损失是无法避免的。在

唯一的选择是将未旋转的图像保留在某个位置,并将多次旋转的角度相加,并始终从初始的未旋转图像构建旋转图像。在

相关问题 更多 >