PIL Image 旋转 Rotate函数的坑和解决方案

您所在的位置:网站首页 函数图像旋转45度 PIL Image 旋转 Rotate函数的坑和解决方案

PIL Image 旋转 Rotate函数的坑和解决方案

2023-08-27 05:51| 来源: 网络整理| 查看: 265

PIL Image 旋转 Rotate函数的坑和解决方案 PIL Image旋转的坑有坑的代码解决方案1:expand 参数设置为True代码 解决方案2:用transpose来做旋转代码

PIL Image旋转的坑

想做图片的90,180,270度旋转,原本使用的PIL.Image.rotate,但发现出来的图片长宽没有进行相应调整,导致图片有黑边,以下是有坑的代码和解决方案

有坑的代码 from PIL import Image def rotate(img_path): image = Image.open(img_path) angles = [90,180,270] for angle in angles: rotated = image.rotate(angle) rotated.save(img_path[:-4]+'_'+str(angle)+'.jpg')

原图:

原图 旋转之后的图: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 这里可以看到如果旋转180还是可以的,但90和270度会产生黑边,原因是这里的旋转并没有将原图的长宽进行对应的改变,旋转之后的图和原图的长宽是一样的。

解决方案1:expand 参数设置为True 代码 from PIL import Image def rotate(img_path): image = Image.open(img_path) angles = [90,180,270] for angle in angles: rotated = image.rotate(angle,expand=True) rotated.save(img_path[:-4]+'_'+str(angle)+'.jpg') 解决方案2:用transpose来做旋转 代码 from PIL import Image def rotate(img_path): image = Image.open(img_path) # FLIP_LEFT_RIGHT = 0 # FLIP_TOP_BOTTOM = 1 # ROTATE_90 = 2 # ROTATE_180 = 3 # ROTATE_270 = 4 # TRANSPOSE = 5 # TRANSVERSE = 6 angles = [Image.ROTATE_90,Image.ROTATE_180,Image.ROTATE_270] for angle in angles: rotated = image.transpose(angle) rotated.save(img_path[:-4]+'_'+str(angle)+'.jpg')

新代码生成的旋转后的图: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 图片在百度上随便找的,若有侵权请告知。 如果有帮助到各位,劳烦高抬贵手给个三连!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3