真香!一行Python代码,帮你制作小姐姐的表情包,靠谱吗?

对于小姐姐的动态表情包,相必我们大多数人都不会拒绝,而且都会选择默默的将其收藏(不要问我怎么知道的),一方面小姐姐的美貌会让人赏心悦目,另一方面也显得朋友间的交流更加的充满动态感。
为了更加丰富大家的“小姐姐表情包”,今天,小编就带领大家直接从视频中直接提取小姐姐的动态图,并逐步的深入,最终制作我们想要的动态表情包。
我们今天的讲解会沿着下面的线路进行,先一下整个的思路:

01.视频提取动态图
首先我们来进行第一部分的讲解——从视频中提取动态图。这一部分,我们采用moviepy函数库进行实现,我们结合下图的程序来讲解一下我们是如何实现的:

上述的程序中虽然短小精悍,但是做了很多事情:
- 首先实例化了一个VideoFileClip类对象;
- 然后我们将视频的时间范围根据自己的需求进行裁剪,其中参数中的(0, 2.22)指的是第0分钟2.22秒的时间,我们将视频播放速度变为原来的0.3倍;
- 然后调整视频的大小为原来的一半;
- 最后保存为GIF图像;
大家可以看出,虽然程序有换行,但是程序本身就是一行代码而已。其效果如下所示:

02.裁剪图片区域
但是我们发现,图像的边缘存有空白的地方,是我们不需要的,我们需要的仅仅是图像本身,一次,我们对程序进行进阶处理,裁掉点我们不需要的部分,程序如下图所示:

相比于第一版的程序,我们加入了裁剪的范围,而这里的(x1,y1)和(x2, y2)分别指代的是视频中,我们想要裁剪范围的左上角横纵坐标和右下角的横纵坐标。加入范围裁剪后我们来展示一下效果:

03.添加文字
这样,我们就可以在以后的制作中,只保留住我们想要的区域即可。程序写到了这里,我们是不是还忘记了什么,对了,就是添加文字,程序如下图所示:

上述程序中,其实主要就完成了3件事情:
- 我们创建了一个TextClip类,其中set_postion的左右是点明文字的位置相对于视频左上角的偏移量;
- 然后通过CompositeVideoClip类来讲文字和视频进行组合;
- 最后保存到指定的gif文件中即可;
程序结果如下图所示:

值得注意的是,上述的三个函数,如果大家想的话,都可以合并为一句代码进行执行,不过就会看起来比较复杂而已。如果完整展开的话,大概也就30几行代码。
好了,以上我们便完成了小姐姐动态表情包三步走的程序,相信大家通过程序的讲解也明白了如何去创建小姐姐的动态表情包了,大家也赶快按照文章给出的源码动手做起来吧!
本篇的源码和录制的视频,都在公众号【菜鸟学Python】,欢迎来找我交流学习。