太神奇了!GIF的合成与提取这么好玩
今天辰哥教大家一个Python**有趣好玩**的小功能:将多张图片**转为GIF**,同时也可以将一个GIF**动图提取**出里面的图片
在开始之前,先来一个**动图开头**(预览)
![](https://www.icode9.com/i/ll/?i=img_convert/4d4f474e487ffb08daa57566a423c24d.gif)
# 01、图片转GIF动图
**1、准备工作**
在开始合并前,先明确要转换哪些图片,以及安装对应的Python库
![](https://www.icode9.com/i/ll/?i=img_convert/5c539369af74a5afa7ca9259add234fe.png)
这里在网上找了9张图片,并存放在img文件夹下,这9张图片一会待转换为GIF动图。
```nginx
pip install imageio
```
通过上面的命令安装imageio库,该库功能是将多张图转为GIF。
导入相应的库
```python
import imageio
import os
import os.path as osp
```
**2.转换**
读取img文件夹下的所有图片,并通过imageio读取图片内容。
![](https://www.icode9.com/i/ll/?i=img_convert/3dd540e0da9154ad5eb7b206dbb92a68.png)
转换并保存为**chenge.gif**
![](https://www.icode9.com/i/ll/?i=img_convert/ab945a75f12662916c4233690ed96e5c.png)
其中的duration = 1 / fps ,也就是说duration**越大**,动图变化**越慢**,当前duration是**0.1**,其结果如下:
![](https://www.icode9.com/i/ll/?i=img_convert/470b87c8e65430d1ae791359c3ce30c4.gif)
![](https://www.icode9.com/i/ll/?i=img_convert/0af0ce3f4c1fe836e7983cee6fdb76bf.png)
当前duration是**0.5**,其结果如下:
![](https://www.icode9.com/i/ll/?i=img_convert/115d754d6880aacf8c1e91e58636d0b7.gif)
# 02、GIF提取图片
**1.准备工作**
导入PIL库
```javascript
from PIL import Image
```
待提取的gif(这里使用上面保存的chenge.gif)
![](https://www.icode9.com/i/ll/?i=img_convert/6aed6baf90f14519ae1aaab6c8d67e27.gif)
**2.提取**
![](https://www.icode9.com/i/ll/?i=img_convert/8a2628479c0eec993a4c1fdaaa8ebdf2.png)
这里将chenge.gif提取图片,保存到**gif-to-pic**文件夹中,并从**0.jpg**开始命名
![](https://www.icode9.com/i/ll/?i=img_convert/3e7e989885f5758b289da7dcab6fac1e.gif)
![](https://www.icode9.com/i/ll/?i=img_convert/1c673fd80fe18d763b97e384961fde32.png)
可以看到gif动图里面的图片已成功提取。
# 03、小结
本文讲解了如何将多张图片转为GIF,同时也讲解了通过一个GIF动图提取出里面的图片。为了方便大家练习,辰哥已将**代码模块化**。
![](https://www.icode9.com/i/ll/?i=img_convert/5b3a2a8fe4f9d1e17f49f4783e83abca.png)
为了大家方便学习,辰哥已经把本文的**完整源码**和对应的**图片及动图**上传,需要通过公众:**gifpic**
最后,不明白的地方可以在下方留言,一起交流。