使用 Pillow 快速创建 GIF 动图

来源:互联网   
责任编辑:王强
字体:

原标题:使用 Pillow 快速创建 GIF 动图

之前有篇推文分享了如何在 Matplotlib 中生成 GIF 可视化图表,有一定的限制。本文将介绍如何用 Pillow 创建 GIF,可以将任意多张图片组合在一起,成为一张可播放的 GIF 图。

这种方式的适用场景更多,而且 PyPI 上也没有专门的库可以生成 GIF,所以推荐大家收藏本文的代码。

什么是 GIF 图?

GIF(“图形交换格式”)是一种位图图像格式,于1987年开发。

GIF基本上是一系列具有不同设置的图像,例如:

  • 循环播放
  • 每帧的持续时间(图片)
  • 其他…

GIF 也可以是静态图像。

Pillow

Pillow 是 Python 图形处理库 PIL 的一个分支,引入了许多更改和增强功能,以使API易于使用或处理更多图像格式和要求。支持打开、处理和保存多种不同格式的图片文件。

利用 Python 生成 GIF 安装 Pillow

第一步,我们需要先安装 Pillow:

  1. pip install Pillow
生成 GIF

我们生成一张红球往下坠落的 GIF 动图,作为文章示例。

首先,编写一个函数,利用 Pillow 在一张图片上画一个红球。

  1. from PIL import Image, ImageDraw
  2. def create_image_with_ball(width, height, ball_x, ball_y, ball_size):
  3. img = Image.new("RGB", (width, height), (255, 255, 255))
  4. draw = ImageDraw.Draw(img)
  5. # draw.ellipse takes a 4-tuple (x0, y0, x1, y1) where (x0, y0) is the top-left bound of the box
  6. # and (x1, y1) is the lower-right bound of the box.
  7. draw.ellipse((ball_x, ball_y, ball_x + ball_size, ball_y + ball_size), fill="red")
  8. return img

上述代码中,我们使用 Image.new创建了一张 RGB 图片,并设置背景为白色,指定了图片大小。

接着,通过 ImageDraw在图片中的指定参数位置,画了一个红色的圆圈。

所以,我们要做的就是创建多张图片,不断让红球往下坠。

  1. # Create the frames
  2. frames = []
  3. x, y = 0, 0
  4. for i in range(10):
  5. new_frame = create_image_with_ball(400, 400, x, y, 40)
  6. frames.append(new_frame)
  7. x += 40
  8. y += 40
  9. # Save into a GIF file that loops forever
  10. frames[0].save("moving_ball.gif", format="GIF", append_images=frames[1:], save_all=True, duration=100, loop=0)

解释下上面的代码:

  1. 初始化一个空列表 frames ,以及 0点坐标 x 和 y
  2. 用一个运行十次的 for 循环,每次创建一张 400x400 大小的图片,图片中红球的位置不同
  3. 更改红球的坐标,让红球沿着对角线往下坠
  4. 设置参数 format="GIF", append_images=frames[1:],保存 GIF 图片
    • 每帧图片播放100毫秒( duration=100)
    • GIF图片一直重复循环( loop=0,如果设置为 1,则循环1次,设置为2则循环2次,以此类推)

最终生成的 GIF 图大概是下面这样的:

参考链接:http://blog.zhaytam.com/2018/08/21/creating-gifs-using-python-pillow/

回复关键词「m

返回好心游戏,查看更多

为您准备的好内容:

www.haoxyx.com true http://www.haoxyx.com/gamehtml/487512/346892046.html report 3439 原标题:使用Pillow快速创建GIF动图之前有篇推文分享了如何在Matplotlib中生成GIF可视化图表,有一定的限制。本文将介绍如何用Pillow创建GIF,可以将任意多张图片组合在一起,成为一张可播放的GIF图。这种方式的适用场景更多,而且PyPI上也没有专门的库可以生成GIF,所以推荐大家收藏本文的代码。什么是GIF图?GIF(“图形交换格式”)是一种位图图像格式,于1987年开发。
搞笑:你什么都没有,都是有媳妇的人,放过搞笑GIF:大爷好样幽默笑话:和刚交的男幽默笑话:短短一个开开心一刻笑话:一个人优质笑话:强吻一个女搞笑段子:大舅牺牲了内涵段子:不知道媳妇幽默笑话:天不怕地不幽默笑话:我大学刚毕轻松一刻:儿子,你没搞笑图片搞笑段子二汪搞笑GIF:熊大熊二幽默笑话:在路边发现第一脚是意外,这第二这辈子再也不想结婚了搞笑GIF:办公室新啊,救命啊,救命啊一顿操作猛如虎,原来这狮子耍的,那叫一个这招抱摔太完美了!哎,哥们,你媳妇掉了一般妹纸和网红之间只我脑容量有点小,新郎女汉子的日常养成!让我们荡起双桨……相信大家等了一年,终幽默笑话:老板让我每这把刀是不是有什么邪这年头桃子都如胶似漆你们别在意哦,我就是夕阳下的奔跑,像不像土豪烤肉新方法我竟无力反驳当睡懒觉被老婆推下床人倒霉了喝凉水都塞牙这小哥手还挺快!你这是在趁机报复我,你这大三轮比越野强百未来的秋名山车神!我还没有开始发招都已这么冷的天,我妈说怕看我扫堂腿。今天路上遇到的,一辆从家里床上睡觉的位置期中考试成绩出来了,报告他使用502犯规看到这个剧情,你们还这对小夫妻的姓有点特这是一根有魔性的线头看的都醉了再急也不能踢这地方啊估计吃这小哥一拳要在帅哥就是帅哥,怎么样买马桶揣子就得亲身试人家说这张图有亮点,大家感受一下...有小哥,是喝酒喝醉了呢等我有钱了, 我也要妹子,快快快赶紧捡起大爷们对艺术的眼光出从秀恩爱到变成单身的大师兄,你在弄啥咧!这年头没点伎俩都不敢这种狗给我来一只好不小哥,这双眼睛真的很又想骗我生女儿!低电量警告.....戴上之后你不再是一个今晚有口福了,我要把看你们两这笑容,我就可以啊,惊不惊喜,意新娘太调皮了,不带这美女,我可是在睡午觉有老婆的抱好了,老子妹子,你又听啥hig十多年前的时候国内还很多事情只要我们再细还是习惯做熟的端上来说出来没人会相信,我逗比搞笑表情包幽默笑话 女友:“亲幽默笑话 学校举行地幽默笑话 如何套路女幽默笑话 妻子问老公幽默笑话 周五晚上喝老爸自己给自己挖坑,闺女挨打,全是老爸的小伙暗示姑娘分手,姑搞笑GIF趣图:哥们搞笑GIF趣图:大哥搞笑GIF趣图:孩子搞笑GIF趣图:小姐搞笑GIF趣图:孩子漫有GIF#丨谁不想快走!!邻家母狗已经幽默笑话 疫情期间爸国外恶搞:沙滩上恶作这件事,一定要说。别人家的房子这样装!当沈腾遇上岳云鹏我很认真的思考了两分谁是德云一哥平平无奇的模仿小天才幽默笑话:我很好奇,有些人,一开口就是老我真的是太难了,上辈这也太爽了,买个房子惹不起的捧哏《鸡毛飞上天》陈江河老郭相亲记开心一刻笑话:告诉大开心一刻笑话:当兵的国产选拔综艺人?是搞开心一刻笑话:记得上秦霄贤对于爱的态度搞笑段子:喝什么喝,德云社老年迪斯科搞笑段子:他们都是骗搞笑段子:幸好是冬天开心一刻笑话:以前就搞笑段子:为父也是望搞笑段子:有一次没有搞笑段子:他让我好好搞笑段子:止驾照,我开心一刻:前两天回老没想到,会有一个女孩搞笑段子:一天我看到老郭活得到底有多明白搞笑段子:不是我说她搞笑段子:我爸写了承秦霄贤的耳朵到底有多
热门推荐
首页推荐
热门图片
最新添加资讯
24小时热门资讯
精彩资讯
精彩推荐
热点推荐
真视界
精彩图片
社区精粹
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2017 haoxyx.com All Rights Reserved. 好心游戏网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号