Python3,为了无损压缩gif动图,我不得不写了一个压缩神器,真香。

简介: 掌握了这种技术,还要什么压缩包。

1、引言

小屌丝:鱼哥, 求助~ 求助~ 求助~

小鱼:你这是告诉我,重要的事情 说三遍吗?

小屌丝:你可以这么理解。

小鱼:好吧… 什么事情,这么慌慌张张。

小屌丝:我的动图太大了, 无法上传。

小鱼:呦呵… 你也开始写博文了?

小屌丝:向鱼哥看齐。

小鱼:没毛病。话说回来, 单张5MB的图片,这都满足不了你?

小屌丝:别提了, 为了能上传这个图片,我可没少想办法。

小鱼:你直接在某网站,进行压缩就可以啊。

小屌丝:不行,需要注册会员,而且,还需要收费的。

小鱼:你还差钱?

小屌丝:哎呦,你不都说白嫖最香吗?

小鱼:… 我… 我可 没说。

小屌丝:你说了… 明明就说了。

小鱼:你还想压缩gif动图吗?

小屌丝:… 想啊

小鱼:那我说过这句话吗?

小屌丝::… 没… 没…有…吧~

小鱼:这还差不多, 那你把图片给我, 我来整。

小屌丝:可行。


我们来看下,小屌丝提供的原图片的大小,10MB,

image.png



想象一下,如果阿里云社区不限制图片上传的大小,那是不是… 。


主要是担心运维同学,天天在公司加班,身心疲惫啊~ ~。


所以,为了照顾运维同学的身体,我们就来压缩自己的图片大小吧。


2、代码实战


2.1 模块介绍


因为是要生成gif动图,所以,必不可少的模块:ImageIo。


  • 如果你不了解ImageIo,那你可以借着这个机会来了解它;
  • 如果你了解ImageIo,那你可以借着这个机会来加深印象;


小屌丝:这合着, 不管会不会,都要重新学习一次呗。

小鱼:知识就是在复习与学习之间,才能完全掌握的。

小屌丝:服。。


1、ImageIo定义:


引言官网的解释:ImageIo提供了一系列示例图像,可以使用类似于URI的方式来使用。


换句话说,即:ImageIo是一个处理图像的接口。


2、ImageIo组成部分


ImageIo分为三部分,如下:


  • Plugin:面向后端的适配器

用于响应来自 它可以将来自 iio.core 的请求转换为 满足请求的后端指令(例如,读/写/迭代);


  • Backend Library:可以读取和/或写入的库 图像或类似图像的对象(/视频);

它可以据需要进行安装;


  • ImageResource:包含图像数据的数据 blob;

通常是由ImageIo读取驱动器。


看到这, 是不是对ImageIo有了初步的了解。

接下来, 我们就去体会ImageIo的强大功能喽。


2.2 安装


由于ImageIo是第三方库,所以,在使用前,要安装。

老规矩,我们直接pip方式安装,即:


pipinstallimageio

然后就是等待着安装。

其它安装方式,直接看这两篇:

2.3 代码示例

代码示例

# -*- coding:utf-8 -*-# @Time   : 2023-02-15# @Author : Carl_DJ'''实现功能    使用ImageIo 和PIL库,对gif动图进行压缩处理'''importimageiofromPILimportImage, ImageSequence# 设置压缩尺寸,这里设置压缩尺寸为500rp=500img_list= []
# 读取原gif动图img=Image.open("./data/param-demo.gif")
# 对原动图进行压缩,并存入img_list foriinImageSequence.Iterator(img):
i=i.convert('RGB')
ifmax(i.size[0], i.size[1]) >rp:
i.thumbnail((rp, rp))
img_list.append(i)
# 计算帧的频率durt= (img.info)['duration'] /1000# 读取img_list合成新的gifimageio.mimsave('param-out.gif', img_list, duration=durt )

运行结果:

image.png

你看, 这压缩完成后, 就是2.7MB,这缩小的不是一点点。

接着,我展示下压缩后的动图,看看是不是无损展示。

88b5b94ca2c94f1aaa9ef5a40348b4ee.gif



小鱼:你看, 是不是非常完美。

小屌丝:唉, 鱼哥,你这动图,怎么似曾相似啊

小鱼:这说明,你又仔细的看我的博文了,这就《Python3,2分钟掌握Doscoart库,你也能成为艺术大师。》 这篇啊。

小屌丝:我去~~~ 我说的嘛。


3、总结


看到这里, 今天的分享就差不多结束了。

同样,回顾下今天的内容,其实很简单的。

介绍了什么是ImageIo,已经ImageIo的组成部分,和代码实战。


所以, 是不是觉得, 跟着小鱼学习新知识,根本就没有那么费劲呢。


我是奕然:

  • CSDN 博客专家;
  • 阿里云 专家博主;
  • 51CTO 博客专家;
  • 51认证讲师;
  • 金牌面试官&面试培训师


关注我,带你学习更多更有趣的Python知识。


目录
相关文章
|
5月前
|
Python
Python 压缩PDF减小文件大小
【8月更文挑战第6天】介绍了三种用Python压缩PDF文件的方法:1) 使用`pdfcompressor`库,安装后可通过简单命令压缩文件;2) 利用`PyPDF2`库,需手动设置压缩参数;3) 采用`pdfsizeopt`库,一键优化PDF大小。各方法均提供示例代码,便于快速实现文件压缩。
709 0
|
4月前
|
Python
用python转移小文件到指定目录并压缩,脚本封装
这篇文章介绍了如何使用Python脚本将大量小文件转移到指定目录,并在达到大约250MB时进行压缩。
52 2
|
3月前
|
Python
Python编程--解压缩文件
Python编程--解压缩文件
22 1
|
3月前
|
Python
你知道 Python 如何解压缩数据吗
你知道 Python 如何解压缩数据吗
55 1
|
4月前
|
Python
python3压缩和解压文件总结(python经典编程案例)
这篇文章总结了在Python 3中使用不同库对文件进行压缩和解压的方法,包括tar、7z、zip和gzip格式的操作示例。
54 4
|
4月前
|
Java 数据安全/隐私保护 Python
Python案例分享:如何实现文件的解压缩
Python案例分享:如何实现文件的解压缩
83 8
|
5月前
|
存储 编解码 API
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
353 1
|
6月前
|
Python
如何用PYTHON代码编辑gif,正方形变圆形
需要注意的是,这个示例考虑到了GIF的循环播放和帧间持续时间,以确保输出的GIF在视觉上与原始GIF尽可能一致。然而,根据你的特定需求,你可能还需要做进一步的调整或优化。
65 5
|
6月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:知识蒸馏与模型压缩
【7月更文挑战第4天】 使用Python实现深度学习模型:知识蒸馏与模型压缩
86 1
|
6月前
|
Python
打印9*9乘法表(递归或压缩矩阵)python
打印9*9乘法表(递归或压缩矩阵)python