使用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)