前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python—自己动手设计一个GIF

Python—自己动手设计一个GIF

作者头像
Ed_Frey
发布2019-07-04 14:34:24
2770
发布2019-07-04 14:34:24
举报
文章被收录于专栏:奔跑的键盘侠奔跑的键盘侠
就简单说说gif的思路吧,如果有玩过美图gif之类的app,就知道做一个gif很简单,连拍几张照片,然后按顺序选中,然后输出即可。那如果是自己动手做呢,无非就是自己做几张图片,然后按顺序合成。

那关键的两步1.作一张张的图片。2.按顺序合并成gif要怎么做呢?

我就做了这么个二维码,然后小飞机绕行,没有涉及复杂的东西。第一步,就是把小飞机贴到二维码上面,比如从左下角开始,按照飞行曲线的许多个坐标,进行粘贴小飞机制图。做一张图比较简单,使用PIL模块中的Image方法,实现代码及思路如下:
im = Image.open('%s\%s.png' % (path_file, 1))
im.thumbnail((800, 600))
im.save('%s\%s.png' % (path_file, 1))
im1 = Image.open('plane.png')
im1.thumbnail((50, 50))
im1 = im1.rotate(90)
im.paste(im1, (x, y), mask=im1)
im.save('%s\%s.png' % (path_file2, i))

也就是打开二维码图片、设置图片大小,然后打开小飞机并设置图片大小、旋转角度、粘贴坐标,然后一张图就做好了。

辣么,飞机的飞行曲线函数,要怎么表达,我就有点懵逼,想半天没想到牛逼的方法,就用最通俗的分段函数硬杠了出来(4条线段+4个点)

然后就是把这一张张的图片,按顺序合成一个gif,代码如下:
#!/usr/bin/python3.6
# -*- coding: utf-8 -*-
# __author__: Ed Frey
# date:2018/9/5

import imageio,os

def create_gif(image_list, gif_name):
    frames = []
    for image_name in image_list:
        frames.append(imageio.imread(image_name))
    # Save them as frames into a gif
    imageio.mimsave(gif_name, frames, 'GIF', duration = 0.1)
    return

image_list = []
path_file='file_02'
files = os.listdir(path_file)
files.sort(key=lambda x:int(x[:-4]))
for i in files:
    png = '%s\%s'%(path_file,i)
    if os.path.isfile(png):
        image_list.append(png)
create_gif(image_list, 'picture.gif')

旋转角度、粘贴坐标,然后一张图就做好了。

本期就更新到这里,另外,剧透一下最近在玩的内容,就是开发通过个人号发送微信消息、QQ消息的功能(其实本想做企业微信的发送消息,苦于没个人号相关的模块功能,官方的接口是要用企业管理员的权限及相关参数,这谁肯给我呢),目前wechat、qq发消息的核心代码都已完成,而且已经配置基础信息测试了……

一晃可能真要到12月或者1月才能有时间更新出来。我计划要写的比ATM更精致一些,作为今年的收官之作,敬请期待

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奔跑的键盘侠 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档