知乎热搜有一篇帖子,某省会城市健康码连续两次崩溃,相关公司在之前的报道中还声称:用两天两夜,将 1M 图片优化到 100kb。

报道中提到:“为了确保系统运行更高效,他们将一张图片从 1MB 压缩到 500 KB,再从 500KB 优化到 100kb。”

同时还声称,这样的工作看似简单,却蕴含着高技术含量,工程师连续两天两夜守在电脑前,终于攻下难关。

关于健康码崩溃的事网上众说纷纭,但消息肯定真有假,就坐等官方发布最终消息就好了。不信谣不传谣。

今天咱们就单纯来讨论下图像压缩这件事。

关于图像压缩,工作中肯定是少不了的,尤其是涉及到图片传输和存储的时候,比如微信、微博、知乎等都需要考虑如此大批量的图片如何存储的问题。

都知道,咱 Python 是有很多图像库的,那想搞一下图像压缩还不是手到擒来,

PIL

PIL 是 Python Image Library 的简称,其功能非常强大,短短三行代码即可实现图像的压缩。

咱们先来看下原图。

from PIL import Imageim = Image.open("girl.jpg")
im.save("girl-out2.jpg", quality=10) # quality 是压缩比率

来看下压缩之后的。

从以上压缩结果来看,quality 设置为 10 时从 2.5MB 压缩到了 400KB,整体效果还是不错的。但整体来看图片是有一定的失真的,尤其是突然将图片放大之后,失真更明显,不信你看。

经过多次实验,发现将 quality 设置为 20 效果最佳。此时图像最终大小压缩到了 500KB,而且图片也不会失真。

事实上,PIL 提供了很多方法对图片进行缩放,下面咱们再试试另外一种办法。

from PIL import Imageim = Image.open("girl.jpg")
w, h = im.size
im.thumbnail((w // 2, h // 2))
im.save("girl-out.jpg")

在上面的代码中,我们先获得了图片的原始尺寸,然后直接将图片缩放至原来的百分之五十。最终图片大小为 343KB,而且图片看起来也不会失真。

由此可见,thumbnail() 的效果要比设定 quality 的效果要好一些。

当然,PIL 还提供了 resize() 函数来对图片进行缩放,小伙伴们可以自行尝试下哦。

OpenCV

OpenCV 也是一个比较好用的操作图像的库,四行代码实现图片缩放。

import cv2 as cvimg = cv.imread("girl.jpg")
resize_img = cv.resize(img, (0, 0), fx=0.25, fy=0.25, interpolation=cv.INTER_NEAREST)
cv.imwrite('girl-out3.jpg', resize_img)


在以上的代码中,我们先将原始图片读入进来,之后缩放至原图的四分之一。从结果来看,效果还算可以。大小合适,图像没有明显的失真。

总结

今天给大家介绍了两款高质量图像处理库,从结果来看,二者的压缩效果是差不多的。事实上,这两个库不仅适用于图像压缩,还有很多高级玩法,这个就要靠小伙伴们自行解锁了。

关于Python技术储备

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

点此免费领取:CSDN大礼包:《python学习路线&全套学习资料》免费分享

一、Python所有方向的学习路线

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

二、Python必备开发工具

三、Python视频合集

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

四、实战案例

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

五、Python练习题

检查学习结果。

六、面试资料

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


这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

Python小技巧:将 1M 图片优化压缩到 1024kb,简单到手到擒来相关推荐

  1. python小技巧5 调整图片像素输出更清晰

    可以用matplotlib包的dpi这个参数控制,以500每英寸内的点数(其实就是提升了图片的像素,更容易看)来对图片进行存储,dpi适当变大,不就清晰多了. plt.savefig("1. ...

  2. Python小技巧:两行代码实现批量给图片填加水印,这也太简单了~

    文章目录 先让我哔哔一下 准备工作 代码解析 1.单张图片添加水印 2.批量填加多张图片水印 先让我哔哔一下 来个超级超级简单的小案例,有手就行的那种~ 我们平时要给图片加水印,但是又不会PS,免不了 ...

  3. 不藏了!分享100个Python小技巧!!

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...

  4. 收藏喜+1!值得使用的100个Python小技巧

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...

  5. 快收藏!整理了 100 个 Python 小技巧

    作者:小F 来源: 法纳斯特 目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习. ...

  6. python hist函数_虎哥的python小技巧放送之绘制统计图(2)

    先放出第一期让大家回顾一下上次的内容 虎哥的python小技巧放送之绘制统计图(1) 第一期主要给大家讲了一些图形设置的东西.这一次开始正式带大家画图~ 折线图:折线图可以通过matplotlib中的 ...

  7. 3分钟学会python_3分钟学会一个Python小技巧

    Python时间日期转换在开发中是非常高频的一个操作,你经常会遇到需要将字符串转换成 datetime 或者是反过来将 datetime 转换成字符串. datetime 分别提供了两个方法 strp ...

  8. 一些你可能不知道的 Python 小技巧!

    [CSDN 编者按]Python 风头正盛,未来一段时间内想必也会是热门编程语言之一.因此,熟练掌握 Python 对开发者来说极其重要,说不定能给作为开发者的你带来意想不到的财富. 作者 | Seb ...

  9. python小技巧:一步步教你用Python实现

    python小技巧:一步步教你用Python实现2048小游戏 https://www.meipian.cn/2xywlpbv https://www.meipian.cn/2xywhexo http ...

最新文章

  1. idea怎么使用jacoco生成报告_Intellij IDEA解析jacoco结果文件的方法
  2. 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制
  3. matlab中给图像加几个矩形框_在图像中画矩形框(matlab)
  4. 有备无患的Linux操作系统备份方法
  5. 学习笔记-记ActiveMQ学习摘录与心得(一)
  6. JavaScript快速入门-ECMAScript本地对象(String)
  7. AVL树----java
  8. android 行布局选择器,『自定义View实战』—— 银行种类选择器
  9. 工作5年后才明白:不起眼的技能中,藏着你的未来
  10. 爱创课堂每日一题第三十三天- 如何评价AngularJS和BackboneJS?
  11. roseha 8.9 for linux oracle 11g,RoseHA 9.0 for Linux配合Oracle12c配置文档_v2.0-2015-04.pdf
  12. 程序设计中的基本概念
  13. magicbook java开发,买前必看,荣耀MagicBook和华为MateBook D(2018版)哪个更适合你?
  14. 【NOI2008】 赛程安排
  15. H3C 交换机软件版本升级
  16. 基于STM32F103ZET6主控平台实现电容触摸按键 [基于TIM5_CH2(PA1)的输入捕获]
  17. Cannot checkout from svn: svn: E155000: ‘XXX‘ is alrea
  18. python是全世界最好的语言学校_______是全世界最好的语言
  19. 通过SQLSERVER重启SQLSERVER服务和计算机
  20. 选股器用计算机测试利润,ROE+市盈率选股 上周使用计算公式:总得分=营业净利润率+资产负债率+市盈率,来筛选股票。 因为笔者不会计算机编程,在计算历年平均值的时候... - 雪球...

热门文章

  1. 蒙特卡罗模拟赌徒人生
  2. 【SQL SERVER】将查询结果转换为字符串
  3. linux常见问题解答
  4. 发布一个iPhone版“远程桌面”
  5. Wpa_supplicant.conf用法小结
  6. zzulioj1008: 美元和人民币
  7. 一款非常不错的高仿UC浏览器源码下载
  8. idea修改css,js样式浏览器没更新问题
  9. STM32FXXX J-link下载程序说明
  10. 完全弹性碰撞公式推导