3 行 Python 代码实现图片压缩,原来这么简单!

本文介绍了如何使用Python进行图片压缩,通过简单的代码示例展示了如何将大尺寸图片压缩到适合网络提交的大小,同时提供了进阶的压缩方法,确保在视觉效果不受明显影响的前提下,有效减小图片文件大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近因为工作,经常需要在网站提交一些文件和图片

但是在提交图片的时候,有些网站总是会提醒我你的图片文件过大,请提交不超过 2 MB大小的图片、

想想也正常,不限制图片大小容易被塞爆服务器,但是我手机这1亿像素的照片让我很难办呀

而且在线压缩的网站也有上限大小,不然就收费,不然就收费,不然就收费
在这里插入图片描述
种简单功能我要是还付费,岂不是丢了pythoner的face了吗?!我把它实现了我也去上线~

1、原理

仔细分析了一下,图片压缩的原理其实很简单

简单来说,像素图片过大的原因不就是像素格太多了嘛

只要读取所有像素,按规律删掉或者合并像素格,图片的就变小了

当然也要区别有损和无损的情况,只要视觉上过的去,那就没什么问题

2、代码块

简单压缩

下面三行代码完成了图片从 9 MB到 327.65 KB 的压缩效果

只需要使用PIL导入图片,再按照压缩率保存就可以了

下面这张结果图,显然压缩过到我都认出来的情况

from PIL import Image

im = Image.open("pic/cat.jpg")
# 保存,quality是压缩比率
im.save("cat-out2.jpg", quality=1) 

在这里插入图片描述

进阶压缩

进一步修改压缩的代码,可以设定压缩图片的目标大小

然后使用循环来迭代完成目标,最后封装成函数,未来就可以批量压缩图片了

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)

像这样从9 MB 压缩到 1.47 MB,肉眼也是看不出来有什么明显差别,妥妥可以提交到网站上了

在这里插入图片描述

👉关于Python技术储备👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉[[[优快云大礼包:《python兼职资源&全套学习资料》免费分享]]]安全链接,放心点击

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。图片

👉Python必备开发工具👈

图片

👉Python600视频合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 图片

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。 图片

👉Python副业兼职与全职路线👈

image-20230619144606466

👉面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。 图片

上述这份完整版的Python全套学习资料已经上传优快云官方,朋友们如果需要可以微信扫描下方优快云官方认证二维码 即可领取↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值