最近因为工作,经常需要在网站提交一些文件和图片
但是在提交图片的时候,有些网站总是会提醒我你的图片文件过大,请提交不超过 2 MB大小的图片、
想想也正常,不限制图片大小容易被塞爆服务器,但是我手机这1亿像素的照片让我很难办呀
而且在线压缩的网站也有上限大小,不然就收费,不然就收费,不然就收费
这种简单功能我要是还付费,岂不是丢了pythoner的face了吗?!我把它实现了我也去上线~
仔细分析了一下,图片压缩的原理其实很简单
简单来说,像素图片过大的原因不就是像素格太多了嘛
只要读取所有像素,按规律删掉或者合并像素格,图片的就变小了
当然也要区别有损和无损的情况,只要视觉上过的去,那就没什么问题
简单压缩
下面三行代码完成了图片从 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:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)
3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)