pthon 批量压缩当前目录,子目录下图片
需求
经常可能有需要压缩图片的需求.
但是一些批量处理图片的软件又仅仅支持压缩一个目录下的图片,
所以写下了这个图片处理程序:
需要安装:
python 2.x
Image模块
特点:
压缩当前目录,子目录图片
每次压缩,宽度,高度减半
支持中文目录.
压缩文件的思路:
1>.遍历当前目录,
确定当前目录路径
确定当前目录所包含的图片
2>. 处理当前目录下的图片
3>. 记录处理结果.
代码实现:
# -*- coding: utf-8 -*-
import Image
import os
import os.path
import sys
import time
fp=open('log.info','a+')
path=os.path.dirname(__file__)
time_now=time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
i=1
for root, dirs,files in os.walk(path):
current_dir=root
if not len(files):
pass
else:
k=1
for f in files:
if f.endswith('.jpg') :
filepath = os.path.join(current_dir,f)
total_number = "%03d" % i
file_in_dir_number = "%03d" % k
i = i+1
k = k+1
try:
img = Image.open(filepath)
w,h = img.size
img.resize((w/2,h/2)).save(filepath,"JPEG")
log_info=str(total_number)+"\t"+"SMALLSIZE\t"+current_dir+"\t"+ \
file_in_dir_number+"\t"+f+"\t"+str(w)+"\t"+str(h)+ \
"\tSUCESS\t"+str(w/2)+"\t"+str(h/2)+"\t"+time_now
except:
log_info=str(total_number)+"\t"+"SMALLSIZE\t"+current_dir \
+"\t"+file_in_dir_number+"\t"+f+"\t"+"width"+"\t"+"height" \
+"\tSUCESS\t"+"width_s"+"\t"+"height_s"+"\t"+time_now
fp.write(log_info+"\n")
fp.close()
测试的文件夹目录:
D:\desktop\demo
D:\desktop\demo\
| IMG_4342.jpg
| IMG_4343.jpg
| resizeV_SUCESS.py
|
+---AAA
| IMG_4599.jpg
| IMG_4600.jpg
|
+---BBB
| | IMG_4309.jpg
| | IMG_4310.jpg
| | IMG_4311.jpg
| |
| \---BBB1111
| IMG_4323.jpg
| IMG_4324.jpg
|
\---CCC
| IMG_1715.JPG
| IMG_1716.JPG
|
\---CCC111
| IMG_1447.JPG
| IMG_1448.JPG
|
\---CCC222
IMG_0792.JPG
IMG_0793.JPG
python文件所在目录为"**D:\desktop\demo**"
文件所在目录图片
一级子目录AAA下图片
二级子目录BBB,BBB1111下图片
三级子目录CCC,CCC111,CCC222下图片.
测试结果:
测试的文件目录

测试前照片大小

测试后照片大小

生产的log.info查看

另外,文件支持中文目录
pthon 批量压缩当前目录,子目录下图片的更多相关文章
- linux批量压缩当前目录中文件后,删除原文件
linux批量压缩当前目录中文件后,删除原文件 for i in `ls|awk -F " " '{print $NF}'`; do tar -zcvf $i.tar.gz $i ...
- Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件
文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件 by:授客 QQ:1033553122 测试环境: Python版本:Python 3.3.2 Win7 64 代码实践 # ...
- c#目录以及子目录下图片批量缩放,像素不变,图像大小改变
采用多线程,整体效果 图像根目录黏贴或者手工选择,点击开始,进行目录底下图片筛查.采用多线程,点击开始按钮,开启线程,这样UI不会卡住 private void button2_Click(objec ...
- shell 批量压缩指定目录及子目录内图片的方法
用户上传的图片,一般都没有经过压缩,造成空间浪费.因此需要编写一个程序,查找目录及子目录的图片文件(jpg,gif,png),将大于某值的图片进行压缩处理. 查看目录文件大小 du -h --max- ...
- Winform文件夹图片批量压缩整理修改
效果图: 窗体设计器生成的代码: namespace ImageCompact { partial class MainForm { /// <summary> /// 必需的设计器变量. ...
- tinypng的python批量压缩图片功能
tinypng网站提供的图片压缩功能很不错,但是直接在网站上压缩有限制,大量压缩图片时比较麻烦,还好官方提供了很多脚本的自动化压缩接口.下面简单说下python批量压缩步骤. 1.申请api key ...
- 10 行 Python 代码,批量压缩图片 500 张,简直太强大了
本文原创并首发于公众号[Python猫],未经授权,请勿转载. 原文地址:https://mp.weixin.qq.com/s/5hpFDgjCpfb0O1Jg-ycACw 熟悉 "Pyth ...
- shell 批量压缩指定文件夹及子文件夹内图片
shell 批量压缩指定文件夹及子文件夹内图片 用户上传的图片,一般都没有经过压缩,造成空间浪费.因此须要编写一个程序,查找文件夹及子文件夹的图片文件(jpg,gif,png),将大于某值的图片进行压 ...
- 使用Python轻松批量压缩图片
在互联网,图片的大小对一个网站的响应速度有着明显的影响,因此在提供用户预览的时候,图片往往是使用压缩后的.如果一个网站图片较多,一张张压缩显然很浪费时间.那么接下来,我就跟大家分享一个批量压缩图片的方 ...
随机推荐
- 用C写有面向对象特点的程序
比如在一个项目中,有大量的数据结构,他们都是双向链表,但又想共用一套对链表的操作算法,这怎么做到呢,C中又没有C++中的继承,不然我可以继承一父(类中只有两个指针,一个向前一个向后),而其算法可以写在 ...
- sqlite 常用命令
1)创建数据库文件: >sqlite3 /home/test.db 回车 就生成了一个test.db在/home路径下. 这样同时也SQLite3加载了这个test.db 2)用.help可以看 ...
- chrome 开发并使用油猴 Tampermonkey 插件
背景:以前 test.user.js 的插件方式被 Chrome 封杀了.现在只能依赖油猴来编写自己的 js 插件. 官方网站:https://tampermonkey.net/ chrome商店: ...
- postman 定义并使用全局变量
第一步:找到并打开右上角的设置图案 第二步,点击“Global” 按钮 第三步.如图所示,定义全局变量,然后点击“save”即可 第四步:如何使用全局变量,只需要 {{ key }} 即可,如图所示 ...
- springboot JSP 404
up vote 1. mvc # 页面默认前缀目录spring.mvc.view.prefix=/WEB-INF/view/# 响应页面默认后缀spring.mvc.view.suffix=.jsp ...
- django url 中的namespace详解
[引子] django是一个比较全能的web框架,比如它实现了自己的orm模型来对接不同的数据库.并提供了方便的数据接口:django牛逼的地方 还有许多,如他实现了自己的模板语言,这样我们就能方便的 ...
- Python语言的有限状态机实现样例
#!/usr/bin/env python3 class Connection(object): def __init__(self): self.change_state(ClosedConnect ...
- python sort和sorted函数
sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作. list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 ...
- 移动网络应用开发中,使用 HTTP 协议比起使用 socket 实现基于 TCP 的自定义协议有哪些优势?
HTTP 是应用层协议,TCP 是传输层协议(位于应用层之下),放在一起类比并不合适.不过猜测楼主是想对比 “标准 HTTP 协议” 还是 “自定义的协议(基于 TCP Socket)” . 一般来说 ...
- Objective-C 位运算符
转自:http://www.yiibai.com/objective_c/objective_c_bitwise_operators.html 下表中列出了支持Objective-C语言的位运算符.假 ...