几行 python 代码合成 gif / 微信表情~与恶意合成软件说再见【文末附代码】

走远了吗. 提交于 2020-11-10 21:01:10

点击上方AI算法与图像处理”,选择加"星标"或“置顶”

重磅干货,第一时间送达

来源:Piper蛋窝

图片来源:《鬼灭之刃》 op 截屏


gif 格式的图片不但自带“能动”属性,还可作为“表情”被收入微信表情包。随手制作 gif 表情包可以算得上是当代沙雕青年的必备技能之一了。

制作 gif 比较流行的方法是:下载一个专门生成表情包的软件、访问一个在线转换的网站并按顺序上传图片或使用 Photoshop 里面的“时间轴”面板。

但只是为了将几张图片“捏”在一起,产生一个能动的效果,上述方法其实都有些大材小用,并且还不是很方便。

如果不是需要很好的压缩算法,我们完全可以在自己的计算机上轻量、快捷地完成“一键式”转换,因此我们仅需要代码帮我们完成:

- 取现有图片到内存

- 整理内存中的图片信息,符合 gif 格式规范

- 输出 gif 图片。

python 丰富的生态为我们提供了一个很方便的解决方案:

- imageio.imread() 将图片保存为 RGB 点阵于内存中;

- imageio.mimsave(gif_path, frames, 'GIF', duration) 将 frames 中的点阵对象整合,输出 gif 文件到硬盘上。

我对其稍加整理如下:

if __name__ == "__main__":    # path init    path = os.path.join(__file__, "..")    # read pngs    file_list = os.listdir(path)    png_list = file_list.copy()    for file in file_list:        if file[-4:]!=".png":            png_list.remove(file)    png_list.sort(key=lambda x: int(x[:-4]))    # now all the pngs are in the png_list    # and sorted well from min to max    # turn pngs into a gif file    frames = []    for png in png_list:        # get the png file's path        image_path = os.path.join(path, png)        # imageio.imread() to get RGB matrix        # frames is a list which stores the pngs in order        frames.append(imageio.imread(image_path))    # production path    gif_path = os.path.join(path, "my_gif.gif")    imageio.mimsave(gif_path, frames, 'GIF', duration=DURATION)    print("done")    pass
怎么使用呢?
- 首先, 建一个空的文件夹 ,把你的 png 图片保存在其中;
- png 图片命名要 以数字命名 顺序越前 的图片 数字越小
- 该文件夹内,新建一个 python file , 保存上述代码于其中
- 依靠编辑器或命令行 运行这个 .py
- 你将看到  my_gif.gif 文件已经出现在你的文件夹中了。



很多时候,由于 gif 多了“时间”这个维度,图片的顺序、创意、内容等多种元素组合在一起,可以带来比一张图片好很多的效果。比如,可以给女朋友做一套“相册”,这可比修图浪漫多了







值得注意的是,如果你想使用上述方案,图片大小尽量保持一致。



可以访问我的仓库(阅读原文):

https://github.com/PiperLiu/interesting-python3/tree/master/visual-python/imageio2gif


下载1:速查表


AI算法与图像处理」公众号后台回复:速查表,即可下载21张 AI相关的查找表,包括 python基础,线性代数,scipy科学计算,numpy,kears,tensorflow等等



下载2 CVPR2020

AI算法与图像处公众号后台回复: CVPR2020 即可下载1467篇CVPR 2020论文
 
    
    
个人微信(如果没有备注不拉群!
请注明: 地区+学校/企业+研究方向+昵称


点亮在看吧,让更多需要的人看到



本文分享自微信公众号 - AI算法与图像处理(AI_study)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!