Python批量修改图片格式和尺寸
Python批量修改图片格式和尺寸
备注:
1.导入了PIL库,是处理图片用的,很强大;
2.导入了的win32库,是判断隐藏文件用的,我们的项目需要删除隐藏文件,不需要的可以直接找到删除。
3.导入send2trash库,是把删除的文件放进垃圾箱,而不是永久删除,这个我只是防止删除有用的文件而搞得,有点严谨了是吧,不需要的可以删掉啊。
4.我这个脚本是Python2.7编写的,但是在处理中文编码的时候非常恶心,尽管最后被我解决了,这个解决的方法,我随后会再单独写一篇,但是此刻我是建议大家不要用2.x版本的python了。据说3.x的版本的已经解决了编码的问题。希望大家听我的建议。
- #编码= utf-8的
- 导入 系统
- 导入 os,glob
- 导入 平台
- 导入 win32file,win32con
- 从 PIL 导入 图像
- 从 send2trash 导入 send2trash
- 重装(SYS)
- sys.setdefaultencoding('utf-8' )
- #new_width = 2048
- #width = int(raw_input(“width U want:”))
- #imgslist = glob.glob(路径+'/ *。*')
- ShuiPing = “水平”
- ShiZhuang = “矢状”
- GuanZhuang = “冠状”
- def Py_Log(_string):
- 打印“----” + _string.decode('utf-8' )+ “----”
- def is_windows_system():
- 返回“窗口” 在 platform.system()
- def is_hiden_file(file_Path):
- 如果 is_windows_system():
- fileAttr = win32file.GetFileAttributes(file_Path)
- 如果 fileAttr&win32con.FILE_ATTRIBUTE_HIDDEN:
- 返回True
- 返回False
- 返回False
- def remove_hidden_file(file_path):
- send2trash(FILE_PATH)
- 打印“删除隐藏的文件路径:” + file_path
- def astrcmp(str1,str2):
- 返回 str1.lower()== str2.lower()
- def resize_image(img_path):
- 尝试:
- mPath,ext = os.path.splitext(img_path)
- 如果 (astrcmp(ext,“. png ” ) 或astrcmp(ext,“.jpg” )):
- img = Image.open(img_path)
- (宽度,高度)= img.size
- if (width!= new_width):
- new_height = int(height * new_width / width)
- out = img.resize((new_width,new_height),Image.ANTIALIAS)
- new_file_name = '%s%s' %(mPath,ext)
- out.save(new_file_name,质量= 100 )
- Py_Log(“图片尺寸修改为:” + str(new_width))
- 其他:
- Py_Log(“图片尺寸正确,未修改” )
- 其他:
- Py_Log(“非图片格式” )
- 除了 例外,e:
- 打印 e
- #改变图片类型
- def change_img_type(img_path):
- 尝试:
- img = Image.open(img_path)
- img.save('new_type.png' )
- 除了 例外,e:
- 打印 e
- #处理远程图片
- def handle_remote_img(img_url):
- 尝试:
- request = urllib2.Request(img_url)
- img_data = urllib2.urlopen(request).read()
- img_buffer = StringIO.StringIO(img_data)
- img = Image.open(img_buffer)
- img.save('remote.jpg' )
- (宽度,高度)= img.size
- out = img.resize((200 ,height * 200 / width),Image.ANTIALIAS)
- out.save('remote_small.jpg' )
- 除了 例外,e:
- 打印 e
- def rename_forder(forder_path):
- Py_Log(“------------ rename_forder --------------------------” )
- names = os.path.split(forder_path)
- 尝试:
- 如果(UNICODE(热水瓶) 中 的Unicode(名称[ 1 ],'GBK' )):
- os.rename(forder_path,名称[ 0 ] + “\\”+“ 01 ”)
- Py_Log(名称[ 1 ] + “ - >” + “01” )
- 如果(unicode(石庄) in unicode(names [ 1 ],'gbk' )):
- os.rename(forder_path,名称[ 0 ] + “\\”+“ 02 ”)
- Py_Log(名称[ 1 ] + “ - >” + “02” )
- 如果(unicode(管庄) in unicode(names [ 1 ],'gbk' )):
- os.rename(forder_path,名称[ 0 ] + “\\”+“ 03 ”)
- Py_Log(名称[ 1 ] + “ - >” + “03” )
- 除了 例外,e:
- 打印 e
- def BFS_Dir(dirPath,dirCallback = None ,fileCallback = None ):
- 队列= []
- ret = []
- queue.append(dirPath);
- 而 len(队列)> 0 :
- tmp = queue.pop(0 )
- 如果(os.path.isdir(tmp)):
- ret.append(TMP)
- 对于 项目 在 os.listdir(TMP):
- queue.append(os.path.join(tmp,item))
- 如果 dirCallback:
- dirCallback(TMP)
- elif (os.path.isfile(tmp)):
- ret.append(TMP)
- 如果 fileCallback:
- fileCallback(TMP)
- 返回 RET
- def DFS_Dir(dirPath,dirCallback = None ,fileCallback = None ):
- stack = []
- ret = []
- stack.append(dirPath);
- 而 len(stack)> 0 :
- tmp = stack.pop(len(stack) - 1 )
- 如果(os.path.isdir(tmp)):
- ret.append(TMP)
- 对于 项目 在 os.listdir(TMP):
- stack.append(os.path.join(tmp,item))
- 如果 dirCallback:
- dirCallback(TMP)
- elif (os.path.isfile(tmp)):
- ret.append(TMP)
- 如果 fileCallback:
- fileCallback(TMP)
- 返回 RET
- def printDir(dirPath):
- 打印“dir:” + dirPath
- if (is_hiden_file(dirPath)):
- remove_hidden_file(dirPath)
- 其他:
- rename_forder(dirPath)
- def printFile(dirPath):
- 打印“文件:” + dirPath
- resize_image(dirPath)
- 返回True
- 如果 __name__ == ' __main__ ' :
- 而真:
- path = raw_input(“Path:” )
- new_width = int(raw_input(“width U want:” ))
- 尝试:
- b = BFS_Dir(path,printDir,printFile)
- Py_Log(“\ r \ n ********** \ r \ n” + “*********图片处理完毕*********” + “\ r \ n ********** \ r \ n“ )
- 除了:
- 打印“意外的错误:” ,sys.exc_info()
- raw_input('按回车键重新处理' )
Python批量修改图片格式和尺寸的更多相关文章
- Python 批量修改图片格式和尺寸
公司的一个项目要求把所有4096x4096的图片全部转化成2048x2048的图片,这种批量转换图片大小的软件网上很多,我的同事原来使用的美图看看的批量转换,但是稍微有点麻烦,每次还需要指定要转换的图 ...
- python批量修改图片名称
import os class BatchRename(): def rename(self): # windows环境 """ os.rename() 方法用于命名文件 ...
- python 批量修改图片大小
一个文件夹下面有好多图片格式是jpg大小是1920*1080,把它们处理成1280*720并按原先图片的名保存在另一路径下这里首先要找到给定路径下所有的图片文件,然后在修改图片文件的大小,这里用到PI ...
- python 批量更换图片格式脚本
问题:将某文件下的所有jpg的图片更换为png的图片 简单的实现: # -*- coding:utf-8 -*- from os.path import splitext import glob fr ...
- python:批量修改文件名批量修改图片尺寸
批量修改文件名 参考博客:https://www.cnblogs.com/zf-blog/p/7880126.html 功能:批量修改文件名 1 2 3 4 5 6 7 8 9 10 11 12 1 ...
- 使用Adobe Photoshop CC 2015批量修改图片尺寸
最近在工作中遇到一个问题,当时客户给的图片尺寸与我要求的图片不符,由于图片非常的多,如果一张一张的修改,十分的麻烦,后来经过一位同事的指点,发现Adobe Photoshop CC 2015可以实现批 ...
- python 将png图片格式转换生成gif动画
先看知乎上面的一个连接 用Python写过哪些[脑洞大开]的小工具? https://www.zhihu.com/question/33646570/answer/157806339 这个哥们通过爬气 ...
- 【faster-rcnn】训练自己的数据——修改图片格式、类别
修改图片格式 matlab代码 其实内部一些代码是用了rbg的fast-rcnn代码的. \datasets\VOCdevkit2007\VOCcode\VOCinit.m里面,查找'jpg',改成' ...
- 利用python批量修改word文件名的方法示例
利用python批量修改word文件名的方法示例 最近不小心把硬盘给格式化了,由于当时的文件没有备份,所以一下所有的文件都没有了,于是只能采取补救措施,用文件恢复软件恢复了一部分的数据出来,但是恢复完 ...
随机推荐
- 64位win2003/win2008系统IIS6.0/7.5配置PHP的方法
64位win2003/win2008系统IIS6.0/7.5配置PHP的方法 32位的win2003系统配置PHP,估计很多人都已经驾轻就熟了,不过当遇到64位的系统时,估计又会遇上新的问题了.本文记 ...
- 自动填写IE的网页的输入框的内容
procedure TForm1.PutData; var ShellWindow: IShellWindows; nCount: integer; spDisp: IDispatch; i,j,X: ...
- Linux系统基础命令总结
一.帮助命令(1)helpxxxx --helphelp xxxx(2)manman xxxx二.ls查看命令:列表显示目录内的文件及目录ls 参数-l 以列表的形式显示-d 显示目录本身属性-a显示 ...
- 项目总结之HashMap问题
在项目中我需要用另一个项目的中的方法,在另一个项目中的方法返回值是一个hashmap,返回的不是一个hashMap中存的对象而是Object对象.在一个项目中调用另一个项目中的方式是直接引入另一个项目 ...
- 树莓派搭建Git服务器
目录 安装ssh 安装git-core 新增git用户 设置git用户目录 [服务端]设置git仓库 [客户端]设置git仓库 设置ssh登录 安装ssh sudo apt-get install s ...
- netbeans许可证模板设置
工具->模板->设置 user=your name 工具->模板->许可证->默认许可证 <#if licenseFirst??>${licenseFirst ...
- 20145216史婧瑶《Java程序设计》第3周学习总结
20145216 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 认识对象 4.1 类与对象 •对象(Object):存在的具体实体,具有明确的状态和行为 •类(Class) ...
- 0ctf2017-pages-choices
Pages 题目来自于CCS 2016 <Prefetch Side-Channel Attacks: Bypassing SMAP and Kernel ASLR>,利用intel pr ...
- 可扩展多线程异步Socket服务器框架EMTASS 2.0 (转自:http://blog.csdn.net/hulihui)
可扩展多线程异步Socket服务器框架EMTASS 2.0 (转自:http://blog.csdn.net/hulihui) 0 前言 >>[前言].[第1节].[第2节].[第3节]. ...
- Live Score FAQ
Q: Why doesn't the selected game go to top? A: The game which include your favorite team will be alw ...