17.2.5 旋转和翻转图像

图像可以用 rotate()方法旋转,该方法返回旋转后的新 Image 对象,并保持原始
Image 对象不变。rotate()的参数是一个整数或浮点数,表示图像逆时针旋转的度数。在交互式环境中输入以下代码:
>>>  catIm.rotate(90).save('rotated90.png')
>>>  catIm.rotate(180).save('rotated180.png')
>>>  catIm.rotate(270).save('rotated270.png')
注意,可以连续调用方法,对 rotate()返回的 Image 对象直接调用 save()。第一个 rotate()和 save()调用得到一个逆时针旋转 90 度的新 Image 
对象,并将旋转后的图像存入 rotated90.png。第二和第三个调用做的事情一样,但旋转了 180 度和 270 度。
结果如图 17-7 所示。

 


注意,当图像旋转 90 度或 270 度时,宽度和高度会变化。如果旋转其他角度,图像的原始尺寸会保持。在Windows 上,使用黑色的背景来填补旋转造成的缝隙,如图 17-8 所示。在 OS X 
上,使用透明的像素来填补缝隙。rotate()方法有一个可选的 expand  关键字参数,如果设置为 True,就会放大图像的尺寸,以适应整个旋转后的新图像。例如,在交互式环境中输入以下代码:
>>>  catIm.rotate(6).save('rotated6.png')
>>>  catIm.rotate(6,  expand=True).save('rotated6_expanded.png')

第一次调用将图像旋转 6 度,并存入 rotate.png(参见图 17-8 的左边的图像)。第二次调用将图像旋转 6 度,expand 设置为 True,并存入 
rotate6_expanded.png(参见图 17-8 的右侧的图像)。

 

利用 transpose()方法,还可以得到图像的“镜像翻转”。必须向 transpose()方法传入 Image.FLIP_LEFT_RIGHT 或 
Image.FLIP_TOP_BOTTOM。在交互式环境中输入以下代码:
>>>  catIm.transpose(Image.FLIP_LEFT_RIGHT).save('horizontal_flip.png')
>>>  catIm.transpose(Image.FLIP_TOP_BOTTOM).save('vertical_flip.png')

像 rotate()一样,transpose()会创建一个新 Image  对象。这里我们传入 Image.FLIP_ LEFT_RIGHT,让图像水平翻转,然后存入 
horizontal_flip.png。要垂直翻转图像,传入Image.FLIP_TOP_BOTTOM,并存入 vertical_flip.png。结果如图 17-9 所示。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大飞哥软件自习室

希望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值