PIL: 建立一个GIF图
PIL: 建立一个GIF图
一、下载PIL库:
PIL库的下载是:pip install pillow(pillow就是PIL函数了)
二、采用以下代码(有注释):
import PIL.Image as Image #套用PIL函数 def get_gif(pics_dir,n,t):
imgs = []
for i in range(n): #查找到所需要用到的图片(最好命名就是数字0开始)
pic_name = '{}/{}.png'.format(pics_dir,i)
temp = Image.open(pic_name) #打开图片所在的文件夹
imgs.append(temp) #调用函数
save_name = '{}.gif'.format(pics_dir) #命名GIF图的名字
imgs[0].save(save_name, save_all=True, append_images=imgs, duration=t)
#开始建立GIF图
return save_name #保存好GIF图 #n是图片的数量,t是动图延迟的时间
if __name__ == '__main__':
pics_dir = 'GIFdongtu'
save_name = get_gif(pics_dir,47,0.2)
print('制作完成。{}'.format(save_name))#提示GIF是否完成


(注意我的图片类型是png,如果是jpg,记得修改代码中图片格式名)
三、完成后呢,我们还可以在GIF中输入文字,加水印等等,不过我还没学会,学会再说哈( 当然,用python是熟悉代码得,其实用PS和PR做gif更好,更方便,如下)
下面是运用PR和PS做的动图:

四、PIL库总结
1、简单实用Image函数
从文件加载图像,用Image函数的open方法
>>> from PIL import Image
>>> im = Image.open("hopper.ppm")
2、读写图片
1)将文件转换成JPEG
from __future__ import print_function
import os, sys
from PIL import Image
for infile in sys.argv[1:]:
f, e = os.path.splitext(infile)
outfile = f + ".jpg"
if infile != outfile:
try:
Image.open(infile).save(outfile)
except IOError:
print("cannot convert", infile)
3、从打开的文件中读取
from PIL import Image
with open("hopper.ppm", "rb") as fp:
im = Image.open(fp)
PIL: 建立一个GIF图的更多相关文章
- 如何把别人的原理图和pcb图建立一个完整的工程
这里是我从网友那里下载的pcb图和原理图 我们怎么通过这两个文件建立一个完整的工程 我们选中pcb图文件,通过下面的操作,就可以导出pcb封装库: 同样的方法,我选中pcb图,然后用下面图的方法,就可 ...
- OSG入门即osgEarth建立一个地球的详细步骤
OSG入门即osgEarth建立一个地球的详细步骤 转:http://blog.csdn.net/xiaol_deng/article/details/9246291 最近在学习有关osg的知识,刚开 ...
- jmeter 建立一个JMS主题测试计划
创建两个线程组和组 每一个到10迭代. 总消息线程(6)x(1消息) (重复10次)= 60消息. 建立测试计划,您将使用 以下元素: 线程组 , JMS的出版商 , JMS用户 , 图结果 . 一般 ...
- jmeter 建立一个网络服务的测试计划
如何创建一个 测试计划 测试一个网络服务. 你会 创建5个用户发送请求到一页. 同时,你会告诉用户运行测试两次. 的总数 请求用户请求(5)x(1)x(重复2次)= 10 HTTP请求. 来 建立测试 ...
- jmeter 建立一个扩展LDAP测试计划
添加用户 第一步你想做的每一个JMeter测试计划是添加一个线程组元素. 线程组告诉JMeter的用户数量你想模拟,用户应该发送的次数 请求,他们应该发送的请求的数量. 继续添加 线程组 首先选择元素 ...
- 用Quartus II 建立一个工程模板,以后新建工程时无需再配置参数
以前用Quartus II 每次新建工程时,都要设置工程名,选择工程路径,选择芯片型号等等,好麻烦呀!可不可以建一个工程模板,以后新建工程时直接改相应文件名就可以呀!后来我一琢磨,感觉也不是不可以.因 ...
- Extjs6(一)——用sencha cmd建立一个ExtJs小项目
本文基于ext-6.0.0 一.用sencha cmd建立一个ExtJs小项目 首先,需要一个命令行工具.进入extjs所在目录. 然后,输入:sencha -sdk [ExtJs6.0文件夹地址] ...
- C# Dictionary源码剖析---哈希处理冲突的方法有:开放定址法、再哈希法、链地址法、建立一个公共溢出区等
C# Dictionary源码剖析 参考:https://blog.csdn.net/exiaojiu/article/details/51252515 http://www.cnblogs.com/ ...
- msql_createdb: 建立一个新的 mSQL 数据库。
mcrypt_ecb: 使用 ECB 将资料加/解密. mcrypt_get_block_size: 取得编码方式的区块大小. mcrypt_get_cipher_name: 取得编码方式的名称. m ...
随机推荐
- 关于Eclipse for Python
学习Python一段时间,一直用Python的IDE进行开发,过程蛮顺利,但是,基于Visual Studio的使用经验,就希望尝试一种更友好的,更方便管理项目的IDE,分别尝试了PyCharm和Ec ...
- [PHP] 常备的现代 PHP 项目开发准备
[ Windows 开发环境 ] phpStudy(http://phpstudy.php.cn/) 现在一般选择版本: php7.1 + nginx,常用 curl.openssl 扩展选择打开. ...
- [Tools] 一种调试 Android App 接口的方式 (Fiddler/Wireshark)
要求:Windows电脑与手机在同一局域网内(Wifi). [ Fiddler 设置代理 ] 下载地址:https://www.telerik.com/download/fiddler 依次 Tool ...
- 模拟Http请求的几种常用方式
HttpURLConnection HttpClient JSOUP Nutch 后续补充用法……
- MyEclipse10.0的破解过程详细及图解
MyEclipse10.0的破解过程详细图解 准备阶段 : 1. 破解软件(网上有下载) 2. JDK软件(免费软件) 开始破解: 1. 关闭MyEclipse 10.0 2. 安装 JDK 然后解压 ...
- Swagger2 header 添加token
@Bean public Docket apiDocument() { return new Docket(DocumentationType.SWAGGER_2) .groupName(" ...
- python3 BeautifulSoup模块
一.安装下载: 1.安装: pip install beautifulsoup4 2.可选择安装解析器:pip install lxmlpip install html5lib 3.解析器比较: 解析 ...
- mysql5.7.21安装要点记录
下载的是Zip解压缩版,Windows系统,因为很久没有在Windows上安装过,这次安装发现了几处和以前安装不一样的地方,特记录如下,供大家参考 MySQL配置文件位置 bin目录下的mysql_c ...
- 学习一下sticky-footer
什么是sticky-footer? 当页面长度不够长的时候,页脚粘贴在视窗底部:如果页面足够长时页脚会被内容向下推送. 实现方式: 1.负margin布局方式 给内容div加一个父div,设置父div ...
- lvm的备份还原及修改UUID
今天在VMware® Workstation 12 Pro虚拟机上克隆了一台Linux虚拟机,无意中发现两台虚拟机blkid一模一样. [root@stau64 ~]# blkid [root@sta ...