Python小技巧:将 1M 图片优化压缩到 1024kb,简单到手到擒来
知乎热搜有一篇帖子,某省会城市健康码连续两次崩溃,相关公司在之前的报道中还声称:用两天两夜,将 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,简单到手到擒来相关推荐
- python小技巧5 调整图片像素输出更清晰
可以用matplotlib包的dpi这个参数控制,以500每英寸内的点数(其实就是提升了图片的像素,更容易看)来对图片进行存储,dpi适当变大,不就清晰多了. plt.savefig("1. ...
- Python小技巧:两行代码实现批量给图片填加水印,这也太简单了~
文章目录 先让我哔哔一下 准备工作 代码解析 1.单张图片添加水印 2.批量填加多张图片水印 先让我哔哔一下 来个超级超级简单的小案例,有手就行的那种~ 我们平时要给图片加水印,但是又不会PS,免不了 ...
- 不藏了!分享100个Python小技巧!!
目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...
- 收藏喜+1!值得使用的100个Python小技巧
目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...
- 快收藏!整理了 100 个 Python 小技巧
作者:小F 来源: 法纳斯特 目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习. ...
- python hist函数_虎哥的python小技巧放送之绘制统计图(2)
先放出第一期让大家回顾一下上次的内容 虎哥的python小技巧放送之绘制统计图(1) 第一期主要给大家讲了一些图形设置的东西.这一次开始正式带大家画图~ 折线图:折线图可以通过matplotlib中的 ...
- 3分钟学会python_3分钟学会一个Python小技巧
Python时间日期转换在开发中是非常高频的一个操作,你经常会遇到需要将字符串转换成 datetime 或者是反过来将 datetime 转换成字符串. datetime 分别提供了两个方法 strp ...
- 一些你可能不知道的 Python 小技巧!
[CSDN 编者按]Python 风头正盛,未来一段时间内想必也会是热门编程语言之一.因此,熟练掌握 Python 对开发者来说极其重要,说不定能给作为开发者的你带来意想不到的财富. 作者 | Seb ...
- python小技巧:一步步教你用Python实现
python小技巧:一步步教你用Python实现2048小游戏 https://www.meipian.cn/2xywlpbv https://www.meipian.cn/2xywhexo http ...
最新文章
- idea怎么使用jacoco生成报告_Intellij IDEA解析jacoco结果文件的方法
- 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制
- matlab中给图像加几个矩形框_在图像中画矩形框(matlab)
- 有备无患的Linux操作系统备份方法
- 学习笔记-记ActiveMQ学习摘录与心得(一)
- JavaScript快速入门-ECMAScript本地对象(String)
- AVL树----java
- android 行布局选择器,『自定义View实战』—— 银行种类选择器
- 工作5年后才明白:不起眼的技能中,藏着你的未来
- 爱创课堂每日一题第三十三天- 如何评价AngularJS和BackboneJS?
- roseha 8.9 for linux oracle 11g,RoseHA 9.0 for Linux配合Oracle12c配置文档_v2.0-2015-04.pdf
- 程序设计中的基本概念
- magicbook java开发,买前必看,荣耀MagicBook和华为MateBook D(2018版)哪个更适合你?
- 【NOI2008】 赛程安排
- H3C 交换机软件版本升级
- 基于STM32F103ZET6主控平台实现电容触摸按键 [基于TIM5_CH2(PA1)的输入捕获]
- Cannot checkout from svn: svn: E155000: ‘XXX‘ is alrea
- python是全世界最好的语言学校_______是全世界最好的语言
- 通过SQLSERVER重启SQLSERVER服务和计算机
- 选股器用计算机测试利润,ROE+市盈率选股 上周使用计算公式:总得分=营业净利润率+资产负债率+市盈率,来筛选股票。 因为笔者不会计算机编程,在计算历年平均值的时候... - 雪球...