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

标签 python python-imaging-library

基本上,我试图通过用户界面旋转图像,但我注意到图像质量在每次旋转时都会严重下降。有谁知道如何解决这个问题?此外,当图像旋转时,它每次都会裁剪部分图像。

这里有一些图片 之前和之后: 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')

最佳答案

rotated_small = photo_small.rotate(angle, resample=Image.BICUBIC, expand=True)

这告诉它使用可用的最高质量插值算法,并扩展图像以包含完整的旋转尺寸而不是裁剪。文档没有说明背景将填充什么颜色。

关于python - 使用 PIL 旋转时如何保持图像质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17821945/

相关文章:

python - 将图像转换为灰度

python - 在 Python 中,如何将位数组转换为字节数组?

python - 在 Python 中将图像处理为棕褐色调

python - NumPy - 删除包含相同元素的子数组

c++ - 如何使Botan RSA签名验证匹配PyCrypto

python - 将文本添加到 python 生成的图像中

python - 运行我的 Python 脚本时出错

python - NumPy,PIL 添加图像

python - Python 中的@property 速度开销

python - 标准输入非交互式时如何清除python中的标准输入缓冲区