Python 实现图片大小压缩
起因
截图组件配合验证码使用优化建议
既然没人帮忙解决只能自己动手了
小白先直接献上代码
from PIL import Image
import os
def compress_image(infile, outfile='', mb=150, step=10, quality=80):
"""不改变图片尺寸压缩到指定大小
:param infile: 压缩源文件
:param outfile: 压缩文件保存地址
:param mb: 压缩目标,KB
:param step: 每次调整的压缩比率
:param quality: 初始压缩比率
:return: 压缩文件地址,压缩文件大小
"""
o_size = os.path.getsize(infile)/1024
if o_size <= mb:
return infile
if not outfile:
dir, suffix = os.path.splitext(infile)
outfile = '{}-out{}'.format(dir, suffix)
while o_size > mb:
im = Image.open(infile)
im.save(outfile, quality=quality)
if quality - step < 0:
break
quality -= step
o_size = get_size(outfile)
return outfile, get_size(outfile)
调用函数执行
查看压缩效果
查看大小
压缩前
压缩后
当然我这里的选择的图片本来也不大,验证码组件最大识别 200K, 这里将 mb 参数调整到 200 就能解决问题了。
厉害了,这个肯定能用上!
不能控制在 200K 之内,应该和阿亮说的加验证码里面超过 200K 的自动压缩下
仔细看,参数 md 就是控制的大小
压缩质量 是啥用处? 就是压缩后的大小比例么? 可以改成 压缩后的大小么? 我不想算具体比例。 😢
不对,我们有这个组件呀 😆
可以可以,接受建议 😆
这个必须点赞。。。
赞!
11 点还在逛社区,,真大佬
感觉到差距了。
好家伙,又在偷偷进步