python压缩图片的代码
从网上复制的,不知道对不对
def compress_image(infile, outfile='', mb=1500, step=10, quality=80):
"""不改变图片尺寸压缩到指定大小
:param infile: 压缩源文件
:param outfile: 压缩文件保存地址
:param mb: 压缩目标,KB
:param step: 每次调整的压缩比率
:param quality: 初始压缩比率
:return: 压缩文件地址,压缩文件大小
"""
o_size = os.path.getsize(file)/1024
if o_size <= mb:
return infile
outfile = get_outfile(infile, outfile)
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)
我自己写的,没有用循环写,但是感这样也是挺不错的。
#by czl
#date 2024年9月12日
#Imag python中用于图片处理的库
from PIL import Image
#os 通用的,基本的操作系统交互功能
import os
file_in = r"D:\桌面\test\1.png"#图片的地址,如d:\sb\1.JPG
quality = 50#压缩的百分比,50不太明显,30比较明显
path, suffix = os.path.splitext(file_in)#分割输入的路径,格式分别给path, suffix
file_out = "{}_{}{}".format(path, quality, ".jpg")#设置图片的输出路径,质量,格式
#关于转换为.jpg输出是因为png是一种无损压缩,这个库对他没有作用
#如果原本的格式就是jpg,可以这样写
# file_out = "{}_{}{}".format(path, quality, suffix)
img = Image.open(file_in)#打开图片
img.save(file_out, quality=quality)