python 秒级压缩上万张图片

最近买了一批图片,总共一万六千张,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 math

ImageFile.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 compress.py”。几秒之内,压缩就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值