分享

御丽诗妃使用Python+imageio将照片制作为GIF动画

 百度刘超1 2020-08-06

以下内容来源于网络,非本人原创,著作权归属原作者所有。使用Python+imageio将照片制作为GIF动画

原创 AI与可视化

导读:阅读本文,你将学会如何使用Python语言和imageio模块,只需10行左右代码,将大小、格式完全相同的照片制作为GIF动画。

GIF动画能够表达丰富有趣的信息,因此在许多场合得到了广泛的应用。你有没有想过将自己喜欢的照片制作为GIF动画,供朋友们欣赏呢?本文介绍如何使用Python编写10行左右的代码,制作心仪的GIF动画。

一、为什么推荐使用Python制作GIF?

GIF的制作工具有很多。在此,推荐使用Python编程语言和imageio模块来将照片制作为GIF动画。其优点在于编程具有极大的灵活性:1. 能够处理相同大小、不同大小的照片;2. 能够调节播放速度;3. 能够压缩或放大图片,控制图片的大小;4. 你甚至能够为自己制作的GIF打上水印。总之使用Python制作GIF非常灵活方便,而需要编写的代码又很简短。

二、推荐使用Anaconda Python

关于编程工具,推荐使用Anaconda Python. 它集成了许多常用的库,当然包括制作GIF用的imageio模块。用户不必另行安装,非常方便初学者使用。如果你还没使用过Anaconda Python,请到本号的免费专栏Anaconda Python的安装和使用,了解它的使用方法,不难噢。

三、准备工作

要制作GIF,首先要有2张以上的照片。你可以使用自己拍摄的照片,或者网上下载的照片,也可以从视频中提取帧。关于如何从视频中提取帧,以后会专门撰文说明。

你手头的照片大小和格式可能不同,首先要将它们转换成相同的格式。这里我们使用jpg格式。许多情况下你手里的照片大小并不相同,除非是从视频里提取的帧,或者照片太大,这都需要调整照片的大小。

本文先假定你手里的照片大小、格式都相同,要制作为的GIF也不需要对图片进行压缩。至于其它各种复杂情况,以后再撰文说明如何处理。将照片放到一个文件夹里,按照你希望的播放顺序将各张照片按升序命名。另外再建立一个文件夹,用来存放制作好的GIF文件。然后就可以编写程序,逐个读取照片制作为GIF。

四、GIF制作思路

首先要导入os模块,用于获取指定文件夹下所有文件的名字;导入imageio模块,用于读取图片,并将它们制作为GIF。

然后,使用os.listdir()方法来获取指定路径下所有图片的名字列表。

第三步,创建一个初始化为空的列表,用于保存读取的每张图片。

第四步,创建一个循环体,遍历图片名字列表,拼出每张照片的全路径名称,使用imageio.imread()方法读取每张照片,并使用append()方法将其添加到图片列表中,直至所有图片读取并添加到图片列表完毕。

第五步,使用mimsave()方法将图片列表保存为GIF。mimsave()方法主要有4个参数,第1个参数是要保存的GIF文件全路径名称,包括后缀名.gif;第2个参数是图片列表;第3个参数是保存类型,设置为字符串'GIF';第4个参数为每张图片播放持续时间,单位为秒。

五、示例源代码

将相同大小、格式的照片制作为GIF动画的示例源代码如下。

import os,imageio
path_source='.../images/' #源图片保存文件夹
path_dest='.../gif/' #GIF文件要保存到的文件夹
source_file_list = os.listdir(path_source) #读取文件夹下所有图片名称
frames = [] #用于保存帧的列表
for file in source_file_list:
full_name=path_source+file #拼出照片的全路径名称
frame=imageio.imread(full_name) #读取照片
frames.append(frame) #将照片添加到列表
#duration:单帧持续时间,单位s
imageio.mimsave(path_dest+'mygif.gif', frames, 'GIF', duration=0.5) #保存GIF文件

制作的GIF效果如下图所示。

使用Python+imageio将照片制作为GIF动画

要想调整播放速度,可以改变duration参数的值。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多