Python快速压缩文件夹中所有图片

使用PIL压缩图片

简单的例子

from PIL import Image
path = "根据自己的情况填写"

foo = Image.open(path)
foo = foo.resize((160,300),Image.ANTIALIAS)
# resize()的两个参数分别限定宽度和长度
foo.save(path ,optimize=True,quality=85)
# save()第一个参数path, 可以另外指定一个已压缩图片的存储路径, 也可以直接把原图片覆盖. quality为压缩质量, 推荐使用85, 可以保证画面清晰而且图片尽可能小.

更为复杂的例子

遍历指定文件夹, 并把不符合规范的图片压缩, 使用压缩后的图片把原图片覆盖

import os
from PIL import Image
import time
def compressImage(path):
    foo = Image.open(path)
    

# foo.size[0]得到是图片的宽度, 由于我处理的图片需要的手机上显示, 所以将宽度大于375的图片, 尽可能的压缩. 

# 你可以根据自己的情况, 对该条件进行修改    
    if foo.size[0] > 375:
        width = foo.size[0]
        rate = width / 375
        width = int(foo.size[0] / rate)
        length = int(foo.size[1] / rate)

        foo = foo.resize((width, length), Image.ANTIALIAS)
        foo.save(path, optimize=True, quality=85)

thisdir = "/home/ubuntu/sites/demo.windytrees.cn/ahu/upload"
# 指定图片文件夹

# r=root, d=directories, f = files

def executeCompressImage():
# walk()会遍历指定路径的所有文件

    for r, d, f in os.walk(thisdir):
        for file in f:
           path = os.path.join(r, file)
           compressImage(path)
while True:
    executeCompressImage()
    time.sleep(600)


你可能感兴趣的:(Python,教程)