当前位置:   article > 正文

Python 旋转、翻转图片(附代码) | Python工具类_python旋转图片

python旋转图片

目录

前言

环境依赖

代码

总结


前言

本文提供对图片旋转,垂直翻转、水平翻转等操作工具方法,可以直接使用。

环境依赖

ffmpeg基础环境,直接参考我的另一篇文章:windows ffmpeg安装部署_阿良的博客-CSDN博客

ffmpy安装,命令如下:

pip install ffmpy -i https://pypi.douban.com/simple

代码

不废话,上代码。

  1. #!/user/bin/env python
  2. # coding=utf-8
  3. """
  4. @project : csdn
  5. @author : huyi
  6. @file : image_move_tool.py
  7. @ide : PyCharm
  8. @time : 2021-11-18 14:10:57
  9. """
  10. import os
  11. import uuid
  12. from ffmpy import FFmpeg
  13. # 垂直翻转
  14. def vflip(image_path: str, output_dir: str):
  15. ext = _check_format(image_path)
  16. result = os.path.join(output_dir, '{}.{}'.format(uuid.uuid4(), ext))
  17. ff = FFmpeg(inputs={image_path: None},
  18. outputs={result: '-vf vflip -y'})
  19. print(ff.cmd)
  20. ff.run()
  21. return result
  22. # 水平翻转
  23. def hflip(image_path: str, output_dir: str):
  24. ext = _check_format(image_path)
  25. result = os.path.join(output_dir, '{}.{}'.format(uuid.uuid4(), ext))
  26. ff = FFmpeg(inputs={image_path: None},
  27. outputs={result: '-vf hflip -y'})
  28. print(ff.cmd)
  29. ff.run()
  30. return result
  31. # 旋转
  32. def rotate(image_path: str, output_dir: str, angle: int):
  33. ext = _check_format(image_path)
  34. result = os.path.join(output_dir, '{}.{}'.format(uuid.uuid4(), ext))
  35. ff = FFmpeg(inputs={image_path: None},
  36. outputs={result: '-vf rotate=PI*{}/180 -y'.format(angle)})
  37. print(ff.cmd)
  38. ff.run()
  39. return result
  40. # 转置
  41. '''
  42. type:0 逆时针旋转90度,对称翻转
  43. type:1 顺时针旋转90度
  44. type:2 逆时针旋转90度
  45. type:3 顺时针旋转90度,对称翻转
  46. '''
  47. def transpose(image_path: str, output_dir: str, type: int):
  48. ext = _check_format(image_path)
  49. result = os.path.join(output_dir, '{}.{}'.format(uuid.uuid4(), ext))
  50. ff = FFmpeg(inputs={image_path: None},
  51. outputs={result: '-vf transpose={} -y'.format(type)})
  52. print(ff.cmd)
  53. ff.run()
  54. return result
  55. def _check_format(image_path: str):
  56. ext = os.path.basename(image_path).strip().split('.')[-1]
  57. if ext not in ['png', 'jpg']:
  58. raise Exception('format error')
  59. return ext

代码说明

1、vflip主要是对图片做垂直翻转,hflip对图片做水平翻转,rotate对图片做顺时针旋转(参数angle为角度,例如:90),transpose对图片有4个类型的转置(type参数为:0,1,2,3,类型如下图)。

2、输出路径避免文件名冲突,使用uuid作为文件名。

3、图片后缀校验目前只做了两种格式校验,如果需要,自行补充。

验证一下

准备的图片如下:

 

 验证代码

  1. if __name__ == '__main__':
  2. print(vflip('C:/Users/huyi/Desktop/1.jpg', 'C:/Users/huyi/Desktop/'))
  3. print(hflip('C:/Users/huyi/Desktop/1.jpg', 'C:/Users/huyi/Desktop/'))
  4. print(rotate('C:/Users/huyi/Desktop/1.jpg', 'C:/Users/huyi/Desktop/', 203))
  5. print(transpose('C:/Users/huyi/Desktop/1.jpg', 'C:/Users/huyi/Desktop/', 2))

vflip效果

hflip效果

rotate效果

 

transpose效果 

OK,完美。

总结

没什么好总结的,抬头看了一眼日历,2021年快过去了,今年你收获了什么呢?

分享

        这世上没有奇迹,有的是偶然和必然,还有谁做了什么而已!——《悠久之翼》 

如果本文对你有帮助的话,请不要吝啬你的赞,谢谢!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/174724
推荐阅读
相关标签
  

闽ICP备14008679号