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文件名的方法示例 最近不小心把硬盘给格式化了,由于当时的文件没有备份,所以一下所有的文件都没有了,于是只能采取补救措施,用文件恢复软件恢复了一部分的数据出来,但是恢复完 ...
随机推荐
- 以二进制方式读取图片保存到string
procedure TForm1.BitBtn1Click(Sender: TObject);var StringStream : TStringStream; FSize : integer; ...
- Scala快速排序
Scala 快排 Scala 基本思想:经过一趟排序,把待排对象分成两个独立的部分,一部分的数据大(小)于另一部分,同理,对子对象进行如此处理,以达到所有数据都有序. package studen ...
- 防止常见XSS 过滤 SQL注入 JAVA过滤器filter
XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往W ...
- 为MarS Board安装无线网卡Linux驱动
玩了几天MarS Board,发现要了解Linux是如何工作的,从嵌入式开发板玩起最有效率.因为会遇到无数的问题和未知领域,然后在解决问题的过程中有深入了解Linux的机会. 为这块开发板专门买了 ...
- CSS Ul(列表样式)
CSS Ul(列表样式) CSS列表属性作用如下: 设置不同的列表项标记为有序列表 设置不同的列表项标记为无序列表 设置列表项标记为图像 一.列表 在HTML中,有两种类型的列表: 无序列表 - 列表 ...
- Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation
1.主要完成的任务是能够将英文转译为法文,使用了一个encoder-decoder模型,在encoder的RNN模型中是将序列转化为一个向量.在decoder中是将向量转化为输出序列,使用encode ...
- 照着官网来安装openstack pike之创建并启动instance
有了之前组件(keystone.glance.nova.neutron)的安装后,那么就可以在命令行创建并启动instance了 照着官网来安装openstack pike之environment设置 ...
- Myeclipse中java项目转换为Web项目
https://blog.csdn.net/u010097777/article/details/51281059 这两天工作安排做一个跳转页面,不过昨天发布自己的Tomact花了不少时间,给的项目添 ...
- 【前端】jQuery选择器$()的实现原理
今天三七互娱技术面试的时候面试官问了我这个问题,当时一脸懵逼,于是好好总结一下. 当我们使用jquery选择器的时候,$(s).回默认去执行jquery内部封装好的一个init的构造函数每次申明一个j ...
- Docker storage drivers
因为Docker的镜像是分层的,包含只读层和可读写层,因此选择正确的Storage Driver对于容器的性能是非常重要的. 支持的Linux发行版本 目前推荐使用性能最好的Overlay2.RHEL ...