python 表情包 gif_几行 python 代码合成 gif / 微信表情~与恶意合成软件说再见【文末附代码】...
图片来源:《鬼灭之刃》 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 多了“时间”这个维度,图片的顺序、创意、内容等多种元素组合在一起,可以带来比一张图片好很多的效果。比如,可以给女朋友做一套“相册”,这可比修图浪漫多了:
还可以给公众号制作个粗糙的头图:
值得注意的是,如果你想使用上述方案,图片大小尽量保持一致。
感谢阅读,公众号:Piper蛋窝。
python 表情包 gif_几行 python 代码合成 gif / 微信表情~与恶意合成软件说再见【文末附代码】...相关推荐
- 几行 python 代码合成 gif / 微信表情~与恶意合成软件说再见【文末附代码】
图片来源:<鬼灭之刃> op 截屏 gif 格式的图片不但自带"能动"属性,还可作为"表情"被收入微信表情包.随手制作 gif 表情包可以算得上是当 ...
- Qt实现数字音频均衡器[文末附代码]
Qt实现数字音频均衡器 在实现音频播放器的时候,我们常常需要一个均衡器来调节各个频段的增益,就是我们平常说的调重低音.一个数字均衡器的架构通常都如图所示: 从图中可以看到,这里的数字均衡器实际上就是三 ...
- Python 阶段性总结《抽奖系统》(文末附代码地址)
大家好,今天是python 的阶段性总结,经过前面的学习,我们需要用一个小Demo(抽奖系统)来巩固我们的所学所识: 1.抽奖系统介绍 这是一个通过命令行执行抽奖的操作系统,没有华丽的界面. 1.1 ...
- 基于P2P万信金融-- 万信金融项目之业务大总结(文末附代码地址)
一.项目介绍 1. 行业简介 P2P金融又叫P2P信贷.其中,P2P是 peer-to-peer 或 person-to-person 的简写,意思是:个人对个 人.P2P金融指个人与个人间的小额借贷 ...
- 周志华《Machine Learning》学习笔记(6)--神经网络(文末附代码)
上篇主要讨论了决策树算法.首先从决策树的基本概念出发,引出决策树基于树形结构进行决策,进一步介绍了构造决策树的递归流程以及其递归终止条件,在递归的过程中,划分属性的选择起到了关键作用,因此紧接着讨论了 ...
- 利用vue数据驱动视图的思想实现走马灯(文末附代码)
以"猥琐发育,别浪!"为例. 思路: 1.搭建静态页面 2.创建vue实例,展示数据 3.处理字符串(切割+拼接) 4.开始.暂停按钮的点击事件 搭建静态页面 <div id ...
- 学习python表情包_我用Python一键保存了半佛老师所有的骚气表情包
本文首发于公众号「Python知识圈」,如需转载,请在公众号联系作者授权. 2019年发现两个有意思而且内容比较硬核的公众号.都是同一个人运营的,我们都叫他半佛老师,现实中的职业是风控,公众号内容涉及 ...
- python制作会动的表情包_有趣的python小项目,自动生成有趣的表情包!
加小编QQ群:832339352即可自动获取大量Python视频教程以及各类PDF! 作为一个数据分析师,应该信奉一句话--"一图胜千言".不过这里要说的并不是数据可视化,而是一款 ...
- Python表情包处理教程:如何过滤和替换emoji表情?
Python表情包处理教程:如何过滤和替换emoji表情? Python是一种高级编程语言,它也是一个非常流行的用于数据分析.机器学习和自然语言处理的工具.在这些领域中使用文字和符号非常重要,但是有时 ...
最新文章
- 在MFC中使用AFXBEGINTHREAD的方法
- Python小游戏之 - 飞机大战 !
- JUC队列-LinkedBlockingDeque(三)
- css不支持data image,CSS_CSS中使用image data URI来处理图片的方法,即将图片资源转换为 base64 字 - phpStudy...
- linux 分配组命令,linux下一个用户如何分配给多个用户组?求命令,谢了。
- python是什么专业学的-Python开发专业学校排名是什么样的
- 第二周java基础学习内容
- 谷歌浏览器未发送任何数据_将 service worker 引入谷歌搜索
- 证件类型与证件号码前端验证
- 有关计算机知识竞赛的新闻稿,知识竞赛通讯稿5篇
- 理财新技巧之一 玩转国债和企业债回购
- Frenet坐标系与Cartesian坐标系互转(一):公式推导
- js、jquery操作复选框checkbox总结(单个/多个获取选中值、初始化设置默认选中值、全选反选)
- 安规之电气间隙和爬电距离
- 30天自制操作系统 导读
- 手机淘宝宝贝详情页《问大家》数据爬虫手把手实战,包含动态参数如何生成...
- 使用Maven创建Web应用程序项目
- 在k8s上安装Jenkins及常见问题
- 总结 : 论文--Financial Distress Prediction
- 规则引擎Drools详细介绍