前言

当我们进行大量图像处理时,经常需要旋转或镜像图像。但一张张处理图片费神又费力,有什么好的办法可以帮助我们快速搞定这个问题呢?这时候我们可以写个简单的python程序来搞定它!~

在Python中,我们可以使用Pillow库(Python Imaging Library)进行图像处理。Pillow库提供了很多函数和类,使得图像旋转和镜像变得容易。

本文将会以一下三张图片为例,在每一部分将会简单介绍函数后附上批量处理图片的代码,零基础的小伙伴也可以轻松使用嗷~


〇、准备工作,PIL库安装

一、图像旋转

二、图片镜像


〇、准备工作,PIL库安装

可以通过以下命令在Python中安装Pillow库(它是Python Imaging Library的分支版本):

pip install Pillow

此外,还可以通过Anaconda或Miniconda等科学计算发行版进行安装。如果你使用Anaconda,可以使用以下命令来安装Pillow库:

conda install pillow

一、图像旋转

对于图像旋转,可以使用Pillow库中的rotate()函数,可以通过指定旋转角度来实现。具体来说,我们可以使用Image.rotate(angle)函数(其中angle为旋转角度,单位为度)。例如,我们想将图像旋转45度,可以这样做:

from PIL import Imageimage = Image.open("path/to/image.jpg") # 读取图片,这里要注意图片的格式
rotated_image = image.rotate(45) #确定旋转角度

在这个例子中,我们打开了一张图片,然后使用rotate()函数将其旋转了45度。我们可以使用show()函数来查看或是用.save(path)直接保存旋转后的图像:

rotated_image.show() #查看图片rotated_image.save('rotated_image.jpg') #保存图片

当我们希望可以批量旋转一个文件夹里的图片90°180°270°时,我们可以这么做:

from PIL import Image
import os# 设置输入和输出目录
input_dir = '/path/to/input/directory/'
output_dir = '/path/to/output/directory/'# 循环输入目录中的所有JPEG图像
for filename in os.listdir(input_dir):#只可以处理jpg和jpeg后缀下的程序,如果你的图片是别的后缀,请直接更改点后的文件格式if filename.endswith('.jpg') or filename.endswith('.jpeg'):# 打开图像img = Image.open(os.path.join(input_dir, filename))# 旋转图像并保存 这里可以直接添加或删除以选取你需要的旋转角度for angle in [90, 180, 270]:rotated_img = img.rotate(angle)rotated_img.save(os.path.join(output_dir, f'{angle}_{filename}'))

成品如下~!


二、图片镜像

对于图像镜像,可以使用Pillow库中的transpose()函数,可以通过指定翻转模式来实现。具体来说,我们可以使用Image.transpose(mode)函数,其中mode为翻转模式,可以为Image.FLIP_LEFT_RIGHT(水平翻转)或Image.FLIP_TOP_BOTTOM(垂直翻转)。例如,如果我们想将图像水平翻转,可以这样做:

from PIL import Imageimage = Image.open("path/to/image.jpg")
mirrored_image = image.transpose(Image.FLIP_LEFT_RIGHT)

在这个例子中,我们打开了一张图像,然后使用transpose()函数将其水平翻转。我们可以使用show()或是用.save(path)函数来查看或保存翻转后的图像:

mirrored_image.show()
mirrored_image.save('mirrored_image.jpg')

当我们希望可以批量水平和垂直镜像一个文件夹里的图片时,我们可以这么做:

from PIL import Image
import os# 设置输入和输出目录
input_dir = '/path/to/input/directory/'
output_dir = '/path/to/output/directory/'# 循环输入目录中的所有JPEG图像, 这里如果你是别的类型格式图片,直接更改点后图片类型即可
for filename in os.listdir(input_dir):if filename.endswith('.jpg') or filename.endswith('.jpeg'):# 打开图像img = Image.open(os.path.join(input_dir, filename))# 水平镜像并保存mirrored_img = img.transpose(Image.FLIP_LEFT_RIGHT)mirrored_img.save(os.path.join(output_dir, f'horiz_{filename}'))# 垂直镜像并保存mirrored_img = img.transpose(Image.FLIP_TOP_BOTTOM)mirrored_img.save(os.path.join(output_dir, f'vert_{filename}'))

成品如下~!

使用Python批量旋转,镜像图片相关推荐

  1. python批量旋转裁剪图片实战

    python批量旋转裁剪图片实战 引子 有一本PDF电子书,由扫描的图片生成的,每页的截图看起来如下图: 它是展开扫描的,两页并列在一张图片上.并且每页又是分两栏,这样的PDF在手机.平板上,需要放大 ...

  2. Python批量重命名图片

    Python批量重命名图片 # -*- coding:utf8 -*-import osclass BatchRename():'''批量重命名文件夹中的图片文件'''def __init__(sel ...

  3. python下载网页里面所有的图片-Python批量下载网页图片详细教程

    很多朋友在网上查找批量下载图片的方法~发觉挺凌乱的,无从下手.这里绿茶小编就来跟大家分享下使用Python批量下载图片方法. 目标:爬取某个网站上n多页的链接,每个链接有n多张图片,每一页对应一个文件 ...

  4. Python批量删除错误图片、修改文件名以及删除重复图片

    一.批量删除错误图片: 代码如下: import osfor name in range(1,150):with open('C:\\Users\\adimin\\Desktop\\Pixiv_Img ...

  5. python pdf删除图片_【原创】python批量删除pdf图片水印(Xobject)的一种方法

    1.说明: 下载到的pdf总会有一些水印,pdf文件水印添加方式除了acrobat adobe自带的以外,还有很多,所以去除水印方法也很多,这里介绍的也只是一种适用python批量删除图片水印Xobj ...

  6. 【超实用】python批量ppt转图片,pdf转图片,word转图片脚本,直接拿去用

    前言 某天我们运营在编辑后台的时候说每次上传ppt,pdf,word时都要把每个文件先导出一次图片,然后一个一个上传(png用作预览,ppt,pdf,word源文件不能直接下载的,要付费),说效率太低 ...

  7. python批量下载必应图片

    梗概:我是个化验师,我们可是也要我们做PPT,医学知识往往繁多复杂,要是有比较好的照片配合文字,可以大大增加PPT的效果.必应这个网站可以搜索到比较有价值的医学图片,要是你输入一个医学名词,同样的搜索 ...

  8. 用IDM 和 python 批量下载webp图片

    今天遇到了一个新的需求.网站上有许多webp图片,直接打开它,拒绝访问,浏览器打开也403,一看就是被保护了.写了python批量来下也失败.最后用IDM试一下,居然可以下载.但是一个一个下载太麻烦了 ...

  9. 使用Python批量转换彩色图片到灰度图片

    当涉及到图像处理和计算机视觉时,有时需要将彩色图片转换为灰度图片,一张一张使用PS等工具转换十分复杂且没有必要.今天介绍的这种方法用到了Pillow库.使用Pillow库来打开,加载并转换彩色图像,并 ...

最新文章

  1. 机房收费系统总结【4】-报错码
  2. 论推荐系统与精细化运营
  3. MySQL jfinal 生成数据_JFinal Web开发学习(四)数据库连接与自动生成model
  4. cron表达式 每天0点10分和30分_“提前2小时下班”:学会这10个函数,办公效率提升了10倍!...
  5. halcon算子盘点:Chapter 13:对象、Chapter 14 区域
  6. DCMTK:类DcmVR:值表示
  7. $().each()和$.each()
  8. 020.day20 线程概述 多线程优缺点 线程的创建 线程常用方法 生命周期 多线程同步...
  9. .net持续集成cake篇之cake介绍及简单示例
  10. 使用Collections.emptyList()生成的List不支持add方法___Java Collections.emptyList方法的使用及注意事项
  11. python虚拟环境中安装diango_python项目部署之 django虚拟环境
  12. freecplus框架-目录操作
  13. 私有5g网络_面向企业的私有5G网络
  14. 高速ADC模拟输入接口设计
  15. 柳传志的回复:联想集团大裁员:公司不是家
  16. 家庭网络对外网络服务搭建指南
  17. 主机防火墙与访问控制
  18. deepin设置快捷键
  19. 神舟战神K660E(D)-I7(D8)(战斗版)(tn15s)拆机清灰教程
  20. 不堪忍受医美行业潜规则,百万年薪院长想辞职

热门文章

  1. weui hd bd ft
  2. hello Kotlin
  3. php调用百度地图定位,php用百度地图API进行IP定位和GPS定位
  4. vivado ise 关联设置
  5. LBM方法中的绝热边界实现形式个人总结
  6. 虚拟机可以识别U盘,但是连接不上U盘的问题
  7. 工业机器人入门z50的含义_工业机器人基础教程——快速入门学习
  8. 豆瓣电影TOP250爬取,并获得相关类型的推荐
  9. 金属材料的性能(1)
  10. win7删除计算机 网络连接,win7系统怎么删除多余的本地连接【图文】