大家好,我是一行

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

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

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

而且在线压缩的网站也有上限大小,不然就收费,不然就收费,不然就收费

这种简单功能我要是还付费,岂不是丢了pythoner的face了吗?!我把它实现了我也去上线~

1原理

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

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

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

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

2代码块

简单压缩

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

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

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

from PIL import Imageim = 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)/1024if o_size <= mb:return infileoutfile = get_outfile(infile, outfile)while o_size > mb:im = Image.open(infile)im.save(outfile, quality=quality)if quality - step < 0:breakquality -= stepo_size = get_size(outfile)return outfile, get_size(outfile)

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

3最后

虽然说,程序员不必要去重复造轮子

但是想想有多少人上传自己的身份证、毕业证等文件到这些在线平台进行图片压缩

如果这些在线网站将个人信息的相关图片都保存下来,日后加以利用,我的小爱语音助手可能接不过来电话了

居然还聊起来了

所以说,对于个人信息安全还是需要保持谨慎

我是一行,技术用不眠,我们下期见~


一行把自己的各种Python玩法文章整理成了一本电子书,干货满满!

目录如下,还包括自己各种面试赚钱经验,现在免费送给大家~

链接: https://pan.baidu.com/s/11R1XRdxbDrFeHdosfP3aGA 密码: dl55

3行Python 代码实现图片压缩相关推荐

  1. 1行Python代码去除图片水印,网友:一干二净

    大家好,这里是程序员晚枫. 最近小明在开淘宝店(店名:爱吃火锅的少女),需要给自己的原创图片加水印,于是我上次给她开发了增加水印的功能:图片加水印,保护原创图片,一行Python代码搞定. 今天在后台 ...

  2. 10 行 Python 代码,批量压缩图片 500 张,简直太强大了

    这几天,我在用 Github page + hexo 搭建个人网站,为了延续风格,就想把配图与文章一起迁移过去.这时候就出现了一个难题:我所用的图片都是高清大图,放到网站上会严重拖慢加载速度.因此,需 ...

  3. 15行Python代码将图片转为Excel

    编写了一小段Python代码,将图片转为了Excel,纯属娱乐.原理很简单,就是将图片每个像素的颜色填充到Excel对应的单元格中. 原图(horse.jpg): 转换后的Excel文档(horse. ...

  4. python图片内容长度识别_教你如何用几行Python代码识别图片文字--就是这么简单!...

    今天给大家分享的主题是用百度的接口实现图片的文字识别. ​ 环境和配置要求 整体是用 Python 实现,所需要使用的第三方库包括 aip . PIL . keyboard . pyinstaller ...

  5. 教你如何几行python代码实现图片转手绘

    这里是运行效果 先展示一下完整代码,后面在进行分析 # -*- coding: utf-8 -*- from PIL import Image import numpy as npim = Image ...

  6. python 解压js压缩的图片_20行Python代码,无损压缩千百张图片!Python有多强!就不用说了...

    每个设计师.摄影师或有图片处理需求小编,都会面临批量 高清大图的困扰. 因为高清大图放到网站上会严重拖慢加载速度,或是有的地方明确限制了图片大小,因此,为了完成工作,他们总是需要先把图片压缩,再上传. ...

  7. python自动下载安装软件_30行Python代码从百度自动下载图片(内附源码和exe程序)...

    只需要30行代码就可以从百度自动下载图片 大家好,我是行哥,一个专门教小学生撸Python的编程老师(小学生都能学会的编程) 这里行哥想问大家三个问题 : - 你还在为批量下载表情包发愁吗? - 你还 ...

  8. python代码图片头像_60行Python代码一键拼出你的微信好友图片墙!

    原标题:60行Python代码一键拼出你的微信好友图片墙! 源 /高级农民工文 /苏克1900 近 2000 位好友的头像拼图,有没有犯密集恐惧症?这并不震撼,如果你有 5000 位好友的话,做出来的 ...

  9. DeepMind提图像生成的递归神经网络DRAW,158行Python代码复现

    作者 | Samuel Noriega 译者 | Freesia 编辑 | 夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]最近,谷歌 DeepMInd 发表论文( DRAW: ...

  10. 158行Python代码复现:DeepMind提图像生成的递归神经网络DRAW

    授权自AI科技大本营(ID:rgznai100) 本文约5200字,建议阅读10+分钟. 本文作者基于代码实现系统的思路,详细阐述了 DRAW 的概念.架构和优势等. [ 导读 ]最近,谷歌 Deep ...

最新文章

  1. 使用 PHPMailer 发送邮件
  2. html如何禁止用户缩放,html如何禁止页面缩放
  3. python日志输出 超量 停止_linux 内存分配参数导致的 buffer_pool 分配不出来的问题排查...
  4. 浪潮云海OpenStack X版本技术贡献中国第一
  5. Java-Super
  6. linux下新建一个脚本文件,linux下新建并启动脚本文件
  7. 2021江苏南通名师高考成绩查询,2021南通市地区高考成绩排名查询,南通市高考各高中成绩喜报榜单...
  8. mysql sqlyog讲解_详细讲解如何用SQLyog来分析MySQL数据库
  9. 调试器如何工作(2)
  10. 上班路上快一倍,长途出门快一半
  11. 计算机efs加密,win7系统对文件启用EFs加密功能的处理办法
  12. mac c语言 新手,第1次买Mac必看,新手买Mac全攻略!
  13. AWS创建用户、角色、策略
  14. 赵小楼《天道》《遥远的救世主》解读(40)芮伟峰的“父爱”和芮小丹的“活出自我”
  15. word 对齐方式 左对齐,居中,两端对齐 的区别 (图示)
  16. Java学习之路01——2021年职业规划
  17. 盘点IT行业“中国式合伙人”的离合春秋
  18. java核心技术卷I-映射
  19. cin.tie() 输入加速器
  20. 计算机不能进入桌面,电脑开机后进不了桌面,详细教您电脑开机后无法进入桌面怎么办...

热门文章

  1. JTT 809-2019客户端与服务端协议开发
  2. marlin固件烧录教程_Marlin固件全中文解析
  3. 联想交换机服务器型号,ThinkSystem DB610s光纤交换机
  4. 2021-03-30 libnice 应用 多线程
  5. WinSocket模型的探讨——select模型
  6. 前端工程师的摸鱼日常(15)
  7. 使用批处理进行批量重命名
  8. 目前IT很火,很多人转行,简单培训后进入IT行业,那么这样“速成”的IT从业人员发展前景如何?
  9. UI控件--时间选择(日期拾取器)
  10. pinyin4j获取汉字正确的全拼和简拼