最近买了一批图片,总共一万六千张,600M,占用的空间太大了。但是一张一张使用压缩工具压缩,效率太低了。上网百度了一番,最后借鉴这篇博客Python实现批量压缩图片,略加修改,成功一次性将所有图片压缩到了79.2M。
安装python环境
去python下载,我装的是这个,安装的时候,记得勾选“同时加入环境变量”。
文章图片
安装模块PIL
pip install Pillow
写压缩代码
新建文件,我命名为“compress.py”。下面,贴上我的代码吧:
# -*- coding: utf-8 -*-
"""
__author__= 'Du'
__creation_time__= '2018/1/5 10:06'
"""import os
from PIL import Image
from PIL import ImageFile
import glob
import mathImageFile.LOAD_TRUNCATED_IMAGES = True
# 你要压缩的图片路径
DIR = 'C:/Users/ting/Desktop/test/'class Compress_Picture(object):
def __init__(self):
# 图片格式,可以换成.bpm等
self.file = '.jpg'# 图片压缩批处理
def compressImage(self):
for filename in glob.glob('%s%s%s' % (DIR, '*', self.file)):
# print(filename)
# 打开原图片压缩 我的目标图片宽度是150px,高度等比例压缩。用户可根据需要修改宽度
targetWidth = 150
sImg = Image.open(filename)
w, h = sImg.size
rate = round(targetWidth/w,4)
height = math.floor(rate*h)
#print(w,h,rate,height)dImg = sImg.resize((targetWidth, height), Image.ANTIALIAS) # 设置压缩尺寸和选项,注意尺寸要用括号 # 如果不存在目的目录则创建一个 ,压缩的图片将存储到compress路径下面
comdic = "%scompress/"%DIR
if not os.path.exists(comdic):
os.makedirs(comdic) # 压缩图片路径名称
f1 = filename.split('/')
f1 = f1[-1].split('\\')
f2 = f1[-1].split('.')
f2 = '%s%s%s'%(comdic, f2[0], self.file)
# print(f2)
dImg.convert("RGB").save(f2) # save这个函数后面可以加压缩编码选项JPEG之类的. PNG 改为“RGBA”
# print("%s compressed succeeded"%f1[-1]) if __name__ == "__main__":
obj = Compress_Picture()
obj.compressImage()
执行
【python|python 秒级压缩上万张图片】打开命令行,执行“python compress.py”。几秒之内,压缩就完成了。
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)