python改变图片尺寸进行压缩

话不多说,看代码,欢迎评论指点!

#这种压缩方法会改变图片的尺寸,我也在寻找一种能够不改变尺寸压缩的方法
#参考链接:
#https://blog.csdn.net/foxqz/article/details/100008721?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecase
#导入压缩图片需要用到的库
import os
from PIL import Image
#开始的文件路径
infile='D69T8VAS0$SW4}6]W4MB%DD.png'
#保存后的路径
outfile='E:\\Desktop\\tu_pian\\xia_g.png'
#指定大小
mb=input('请输入大小(kb):')
mb=int(mb)

# 为了实现能够将图片压缩到指定大小,需要对原图片和压缩后的图片的大小做出判断
#先进行一次压缩,不满足条件的话再调用函数循环压缩
if os.path.getsize(infile)/1024>mb:
    im = Image.open(infile)
    w, h = im.size
    w, h = round(w * 0.8), round(h * 0.8)
    im = im.resize((w, h), Image.ANTIALIAS)
    im.save(outfile, quality=85)
else:
    print('图片比指定的大小还小,不需要压缩!')
    exit()
def compression(outfile,mb,step=10,quality=85):
    # quality: 初始压缩比率,描述压缩文件的效果名,是文件压缩后的大小与压缩前的大小之比,例如:把100m的文件压缩后是90m,
    # 压缩率为90/100*100%=90%,压缩率一般是越小越好,但是压得越小,解压时间越长
    # 先进行判断,目标文件比指定的大小更大时再进行压缩,如果压缩后的图片依然比指定的大小大,循环压缩,直到达到要求为止
    while os.path.getsize(outfile)/1024>mb:
        #打开图片
        im = Image.open(outfile)
        #获取图片的宽度和高度
        w,h=im.size
        #改变高度和宽度
        w,h=round(w*0.8),round(h*0.8)
        #Image.ANTIALIAS是选择高质量缩放滤镜
        im=im.resize((w,h),Image.ANTIALIAS)
        #修改之后进行保存
        im.save(outfile,quality=quality)
    print('压缩完成!')
#经过一次压缩后,若不满足条件,继续调用函数循环压缩
if os.path.getsize(outfile)/1024>mb:
    compression(outfile,mb)
else:
    print('压缩已完成!')

注:这些代码是我综合了两个博主后得来的。附上两个博主的链接。
1、https://www.cnblogs.com/li1992/p/10675769.html

2、https://blog.csdn.net/foxqz/article/details/100008721?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecase

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值