当前位置: 首页 > 后端技术 > Python

用Python制作属于自己的2020专属Flag动画

时间:2023-03-26 16:18:38 Python

2020的开局并不顺利,很多小伙伴都希望2020可以重新开始。但是,时间无法倒流,我们都应该学会积极向前看。我们可以在2020年给自己立个Flag,也可以在剩下的11个月里给自己立个小目标,为之不断努力。今天我们就用这个万能的Python来制作属于我们自己的2020专属旗帜动画。整个动画制作可以分为以下几个步骤,将心愿写入图像,循环播放图像形成gif效果,或者直接将图像合成生成动画。图片制作找了一张贴合主题的背景图,素雅的中国红,满满祝福的剪纸画。以这张图片为背景,在中央空白处写下你的愿望,即在图片中添加文字。这里使用pillow库新建画布,绘制黑色字体。defadd_font(text,i):font=ImageFont.truetype('simhei.ttf',80)img=Image.open('a.jpg')draw=ImageDraw.Draw(img)draw.text((110,110),text,(0,0,0),font=font)img.save('pic/{}.png'.format(i))代码中可以控制文本的位置、大小和字体,整体效果是如下,如果图片轮播想要实现gif的效果,最直接的思路就是连续播放图片。这里我们使用另一个图像处理的通用库opencv。当参数不为零时,可以使用cv2.waitKey()函数。结合循环生成动态图片,即图片轮播。defpic_cycle():path="pic"filenames=os.listdir(path)img_iter=cycle([cv2.imread(os.sep.join([path,x]))forxinfilenames])while1:cv2.imshow('windowtitle',next(img_iter))cv2.waitKey(500)通过itertools.cycle生成无限循环迭代器,每次迭代输出下一张图片,通过改变cv2.waitKey的参数,可以调整速度图像轮播。图片合成如果你不仅要生成动图的效果,还想直接以gif的形式保存,可以使用imageio库。这个库提供了函数mimsave,可以将多张图片合成gif动图,可以通过调整参数fps来调整图片轮播的速度。defmake_gif():gif_images=[]img_paths=os.listdir('pic')img_paths=[os.sep.join(['pic',i])foriinimg_paths]forpathinimg_paths:gif_images.append(imageio.imread(path))imageio.mimsave("a.gif",gif_images,fps=2)效果说明我在代码里写了自己的Flag,大家可以自己制作!