需求

经常可能有需要压缩图片的需求.

但是一些批量处理图片的软件又仅仅支持压缩一个目录下的图片,

所以写下了这个图片处理程序:

需要安装:

  • 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 批量压缩当前目录,子目录下图片的更多相关文章

  1. linux批量压缩当前目录中文件后,删除原文件

    linux批量压缩当前目录中文件后,删除原文件 for i in `ls|awk -F " " '{print $NF}'`; do tar -zcvf $i.tar.gz $i ...

  2. Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件

    文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件 by:授客 QQ:1033553122 测试环境: Python版本:Python 3.3.2 Win7 64 代码实践 # ...

  3. c#目录以及子目录下图片批量缩放,像素不变,图像大小改变

    采用多线程,整体效果 图像根目录黏贴或者手工选择,点击开始,进行目录底下图片筛查.采用多线程,点击开始按钮,开启线程,这样UI不会卡住 private void button2_Click(objec ...

  4. shell 批量压缩指定目录及子目录内图片的方法

    用户上传的图片,一般都没有经过压缩,造成空间浪费.因此需要编写一个程序,查找目录及子目录的图片文件(jpg,gif,png),将大于某值的图片进行压缩处理. 查看目录文件大小 du -h --max- ...

  5. Winform文件夹图片批量压缩整理修改

    效果图: 窗体设计器生成的代码: namespace ImageCompact { partial class MainForm { /// <summary> /// 必需的设计器变量. ...

  6. tinypng的python批量压缩图片功能

    tinypng网站提供的图片压缩功能很不错,但是直接在网站上压缩有限制,大量压缩图片时比较麻烦,还好官方提供了很多脚本的自动化压缩接口.下面简单说下python批量压缩步骤. 1.申请api key ...

  7. 10 行 Python 代码,批量压缩图片 500 张,简直太强大了

    本文原创并首发于公众号[Python猫],未经授权,请勿转载. 原文地址:https://mp.weixin.qq.com/s/5hpFDgjCpfb0O1Jg-ycACw 熟悉 "Pyth ...

  8. shell 批量压缩指定文件夹及子文件夹内图片

    shell 批量压缩指定文件夹及子文件夹内图片 用户上传的图片,一般都没有经过压缩,造成空间浪费.因此须要编写一个程序,查找文件夹及子文件夹的图片文件(jpg,gif,png),将大于某值的图片进行压 ...

  9. 使用Python轻松批量压缩图片

    在互联网,图片的大小对一个网站的响应速度有着明显的影响,因此在提供用户预览的时候,图片往往是使用压缩后的.如果一个网站图片较多,一张张压缩显然很浪费时间.那么接下来,我就跟大家分享一个批量压缩图片的方 ...

随机推荐

  1. OpenCV 学习笔记 02 使用opencv处理图像

    1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...

  2. 10分钟轻松设置出 A+ 评分的 HTTP/2 网站

    前言 其实 HTTP/2 应该是 2015 年的老话题了(2015 年 5 月 14 日 HTTP/2 协议正式版的发布),但是 2018 年都到了很多网站依旧没有使用,作为新一代互联网协议,HTTP ...

  3. 训练深度学习网络时候,出现Nan 或者 震荡

    出现Nan : 说法1: 说法2:说法3:     震荡 : 分析原因:  1:训练的batch_size太小 1.  当数据量足够大的时候可以适当的减小batch_size,由于数据量太大,内存不够 ...

  4. 小程序踩过的一个小坑---解析二维码decodeURIComponent() url解码

    因为我们需要用户扫码进入小程序,每一个货柜都有一个对应的二维码,当然每个二维码里的信息也不一样.用户扫码进入小程序之后,二维码的信息会以参数q带进去,而我们只能在onLoad事件中拿到这个参数, 但是 ...

  5. java线程五种状态

    java线程五种状态: 创建 -> 就绪 -> 运行 -> 销毁 创建 -> 就绪 -> 运行 -> 等待(缺少资源) -> 销毁 下图:各种状态转换

  6. php实现文件下载代码一例

    php实现文件下载代码 需要用到header函数来发送相关信息给客户端浏览器,同时再结合filesize函数来读取文件大小并进行下载操作.简单的文件下载只需要使用HTML的连接标记<a>, ...

  7. 【Android】2.0 第2章 初识Android App

    分类:C#.Android.VS2015:  创建日期:2016-02-04 一.认识Android操作系统 Android最早由安迪•罗宾(Andy Rubin)创办,2007年被Google公司收 ...

  8. windows 内存管理的几种方式及其优缺点

    windows 内存管理方式主要分为:页式管理,段式管理,段页式管理. 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页:页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地 ...

  9. App开放接口API安全性 — Token签名sign的设计与实现

    在app开放接口API的设计中,避免不了的就是安全性问题. 一.https协议 对于一些敏感的API接口,需要使用https协议. https是在http超文本传输协议加入SSL层,它在网络间通信是加 ...

  10. python--使用MySQL数据库

    1.安装mysqlsudo apt-get install mysql-server Sudo apt-get install mysql-client 2.安装MySQL-python驱动sudo ...