工作中偶尔会用到图像批量选装,找工具有点麻烦,就查了一下python脚本。

双击一下就能完成的任务,为啥非要找工具呢,是吧。

#-*- coding: UTF-8 -*-from PIL import Image
import os# 获得文件夹下所有文件
filePath = './imgs/'
filenames = os.listdir(filePath)# 指定保存的文件夹
outputPath = './imgs_rotate/'# 迭代所有图片
for filename in filenames:# 读取图像im = Image.open(filePath + filename)# 指定逆时针旋转的角度im_rotate = im.transpose(Image.ROTATE_90)# im_rotate = im.transpose(Image.ROTATE_180)# im_rotate = im.transpose(Image.ROTATE_270)# 保存图像im_rotate.save(outputPath + filename)

因为还需要遍历文件夹,所以又查了一下遍历的脚本:

import os# 遍历文件夹及其子文件夹中的文件,并存储在一个列表中# 输入文件夹路径、空文件列表[]# 返回 文件列表Filelist,包含文件名(完整路径)def get_filelist(dir, Filelist):newDir = dirif os.path.isfile(dir):Filelist.append(dir)# # 若只是要返回文件文,使用这个# Filelist.append(os.path.basename(dir))elif os.path.isdir(dir):for s in os.listdir(dir):#  如果需要忽略某些文件夹,使用以下代码# if s == "xxx":# continuenewDir = os.path.join(dir, s)get_filelist(newDir, Filelist)return Filelistif __name__ == '__main__':list = get_filelist('.\\imgs', [])print(len(list))for e in list:print(e)

或者:

import osdef get_filelist(path):Filelist = []for home, dirs, files in os.walk(path):for filename in files:# 文件名列表,包含完整路径Filelist.append(os.path.join(home, filename))# # 文件名列表,只包含文件名# Filelist.append( filename)return Filelistif __name__ == "__main__":path = '.\\imgs'Filelist = get_filelist(path)print(len(Filelist))for file in Filelist:print(file)

整理到一起就是:

#-*- coding: UTF-8 -*-from PIL import Image
import osdef get_filelist(path):Filelist = []for home, dirs, files in os.walk(path):for filename in files:# 文件名列表,包含完整路径Filelist.append(os.path.join(home, filename))# # 文件名列表,只包含文件名# Filelist.append( filename)return Filelistif __name__ == "__main__":filePath = './imgs'# 指定保存的文件夹outputPath = './imgs_rotate'# 获得文件夹下所有文件# filePath = './imgs/' # 只能获取当前路径下的文件,不能递归# filenames = os.listdir(filePath)Filelist = get_filelist(filePath)print(len(Filelist))# 迭代所有图片for filename in Filelist:print(filename)# 读取图像im = Image.open(filename)# 指定逆时针旋转的角度im_rotate = im.transpose(Image.ROTATE_90)# im_rotate = im.transpose(Image.ROTATE_180)# im_rotate = im.transpose(Image.ROTATE_270)# 保存图像output_path = filename.replace(filePath, outputPath)outputdir = output_path.rsplit('\\', 1)[0]if not os.path.exists(outputdir):os.mkdir(outputdir)im_rotate.save(output_path)

或者:

#-*- coding: UTF-8 -*-from PIL import Image
import os
import cv2def get_filelist(path):Filelist = []for home, dirs, files in os.walk(path):for filename in files:# 文件名列表,包含完整路径Filelist.append(os.path.join(home, filename))# # 文件名列表,只包含文件名# Filelist.append( filename)return Filelistif __name__ == "__main__":filePath = '.\\imgs'# 指定保存的文件夹outputPath = '.\\imgs_rotate'# 获得文件夹下所有文件# filePath = './imgs/' # 只能获取当前路径下的文件,不能递归# filenames = os.listdir(filePath)Filelist = get_filelist(filePath)print(len(Filelist))# 迭代所有图片for filename in Filelist:print(filename)# 读取图像# im = Image.open(filename)im = cv2.imread(filename)im_rotate = cv2.flip(im, -1)  # 原图顺时针旋转180度# 指定逆时针旋转的角度# image = cv2.transpose(im) #转置图像# im_rotate = cv2.flip(image, 1)  # 等于原图顺时针旋转90度# im_rotate = cv2.flip(image, 0)  # 等于原图顺时针旋转270度# im_rotate = im.transpose(Image.ROTATE_90)# im_rotate = im.transpose(Image.ROTATE_180)# im_rotate = im.transpose(Image.ROTATE_270)# 保存图像output_path = filename.replace(filePath, outputPath)outputdir = output_path.rsplit('\\', 1)[0]if not os.path.exists(outputdir):os.mkdir(outputdir)# im_rotate.save(output_path)cv2.imwrite(output_path, im_rotate)

使用PIL或者opencv的90°、180°、270°的旋转都可以达到效果,但是不知道为什么,使用PIL旋转的占用内存会比原图小,使用opencv旋转的占用内存会比原图大。

参考:【python图像处理】图像的缩放、旋转与翻转

参考:python中如何遍历文件夹及其子文件夹中的所有文件(附实现代码)

python批量旋转图片相关推荐

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

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

  2. 使用Python批量压缩图片

    使用Python批量压缩图片 Python脚本 #coding:utf-8 import Image import os import os.path def picIsCorrect(fileSuf ...

  3. Python批量导入图片生成能治疗颈椎病的HTML5版课件

    本文要点:Python文件操作,HTML5的figure元素和CSS3属性的用法. 说明:1):本文图片来自于相关阅读中Python批量导出多个PPT/PPTX文件中每个幻灯片为独立JPG图片或Pyt ...

  4. python批量读取图片gps位置_某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置!...

    原标题:某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置! 1. python读取图片exif属性中的GPS信息 智能手机或平板如果在拍照时开启定位服务,照片中就会记录拍照位置信息和 ...

  5. python批量导入图片_Python批量导入图片生成PowerPoint 2007+文件

    原标题:Python批量导入图片生成PowerPoint 2007+文件 说明:本文是"Python批量爬取微信公众号文章中的图片"的后续文章,用来把从公众号批量抓取的图片还原为P ...

  6. 教你怎么使用python批量下载图片

    教你怎么使用python批量下载图片 文章目录 教你怎么使用python批量下载图片 前言 一.运行环境 1. win10 2. python==3.7.2 二.需要用到的参数 1. download ...

  7. python批量裁剪图片_python批量剪切图片实现代码

    例子,python入门实例,python实现图片批量剪切. 代码: 代码示例: #!/usr/bin/python # www.# import os from PIL import Image #批 ...

  8. 用Python批量修改图片名称及后缀名

    用Python批量修改图片名称及后缀名 import os a = 'dataset3\png/'//需要修改的图片所在的文件夹 b = 'dataset2\png/'//修改后的图片存放路径 fil ...

  9. Python批量压缩图片

    Python批量压缩图片 代码如下 代码如下 可支持压缩指定单张图片,单个文件夹,多个文件夹,可根据自己实际场景的需求扩展丰富.话不多说,上代码. # @Time : 2021/10/14 9:16i ...

最新文章

  1. HDU1212(大数取模-秦九昭算法)
  2. mysql forget the password
  3. java处理中文字符串_Java实现读取文章中重复出现的中文字符串
  4. 高通的快充协议_高通:后续骁龙旗舰将标配100W快充
  5. js多线程的实现-Worker
  6. 【报告分享】2021制造业数字化转型路线图.pdf(附下载链接)
  7. 小程序 实现语音播放功能
  8. android webview软键盘监听删除键、回车键、其他键
  9. XP系统计算机桌面图标不见,xp系统桌面计算机快捷图标不见了的设置方法
  10. VTK:图形基本操作进阶——连通区域分析
  11. React最佳实践系列 —— Dva快速入门
  12. 从零开始搭建环境安装FCOS(Ubuntu18.04)
  13. statis代码块以及非static代码块之执行
  14. 少儿C++编程从入门到进阶 信奥学奥赛从启蒙到NOI、ACM-ICPC(一)
  15. 2017最新整理python全栈工程师系统培训之路精品课程(全套)
  16. tl494cn逆变器电路图_TL494逆变器应用电路图
  17. 教你如何在高铁动车高峰期购票
  18. es分布式架构和原理分析
  19. 社区版pyCharm安装Django
  20. 牛客练习赛96 C小y的序列

热门文章

  1. /etc/passwd: 权限不够
  2. 中国社科发布:十大调查研究咨询公司助就软实力
  3. Vue打包后浏览器不出来
  4. 如何搭建Java的开发环境
  5. mac 下开发java_MAC 系统java开发环境搭建教程
  6. 数据库-rownum的说明及使用技巧
  7. whl文件安装失败解决方法
  8. 适用于10G/25G/40G/100G的Base-8 MTP/MPO结构化布线解决方案
  9. 【火车高铁12306】改签/退票/变更到站的规定详解
  10. python多个分隔符分割字符串_Python之使用多个分割符分割字符