PIL库的学习总结及生成GIF
一、PIL库的概述
PIL(Python Image Library)库是Python语言的第三方库,需要通过pip工具安装。
打开cmd,输入
pip install pillow
PIL库支持图像存储、显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条、图像和文字等操作。
PIL库可以完成图像归档和图像处理两方面功能需求:
a、图像归档:对图像进行批处理、生成图像预览、图像格式转换等
b、图像处理:图像基本处理、像素处理、颜色处理等
二、PIL库Image类解析
1、Image类关于图像读取与创建
| 方法 | 说明 |
| Image.open(filename) | 加载图像文件 |
| Image.new(mode,size,color) | 根据给定参数创建新图像 |
| Image.open(String.IO.StringIO(buffer)) | 从字符串中获取图像 |
| Image.frombytes(mode,size,color) | 根据像素点创建新图像 |
| Image.verify() | 对图像完整性进行检查,返回异常 |
例如:要加载一个图像文件,最简单如下
from PIL import Image
im=image.open("C:\\Users\\picture.jpq")
2、4个处理图片的常用属性
| 方法 | 说明 |
| Image.format | 图像格式或来源,若图像不是从文件读取,则返回None |
| Image.mode | 图像的色彩模式,‘L’为灰度模式,‘RGB'为真彩色图像,’CMYK‘为出版图像 |
| Image.size | 图像的宽度和高度,单位是像素(px),返回值为元组类型 |
| Image.palette |
调色板属性,返回ImagePalette类型 |
3、图像转换和保存方法
| 方法 | 说明 |
| Image.save(filename,format) | 将图像保存为filename文件名,format是文件格式 |
| Image.convert(mode) | 使用不同的参数,转换图像为新的模式 |
| Image.thumbnial(size) | 创建图像的缩略图,size是缩略图尺寸的二元元组 |
4、图像的旋转和缩放方法
| 方法 | 说明 |
| Image.resize(size) | 返回按size大小调整图像的副本 |
| Image.rotate(angle) | 返回按angle角度旋转图像的副本 |
三、图像的过滤和增强
PIL库的ImageFilter类和ImageEnhance类提供了过滤图像和增强图像的方法
| 方法 | 说明 |
| ImageFilter.BLUR | 图像的模糊效果 |
| ImageFilter.CONTOUR | 图像的轮廓效果 |
| ImageFilter.DETAIL | 图像的细节效果 |
| ImageFilter.EDGE_ENHANCE | 图像的边界加强效果 |
| ImageFilter.EDGE_ENHANCE_MORE | 图像的阈值边界加强效果 |
| ImageFilter.EMBOSS | 图像的浮雕效果 |
| ImageFilter.FIND_EDGES | 图像的边界效果 |
| ImageFilter.SMOOTH | 图像的平滑效果 |
| ImageFilter.SMOOTH_MORE | 图像的阈值平滑效果 |
| ImageFilter.SHARPEN | 图像的锐化效果 |
| 方法 | 说明 |
| ImageEnhance.enhance(factor) | 对所选属性的数值增强factor倍 |
| ImageEnhance.Color(im) | 调整图像的颜色平衡 |
| ImageEnhance.Contrast(im) | 调整图像的对比度 |
| ImageEnhance.Brightness(im) | 调整图像的亮度 |
|
ImageEnhance.Sharpness(im) |
调整图像的锐度 |
四、制作GIF
1、语法基础
相关模块 import PIL.image
打开图片 img=Image.open(img_name)
保存图片 img.save(save_name,save_all=True,append_images=imgs,duration=t)
注意:save_all=True设置此项,会保存所有图片对象,否则只保存一张
duration=t GIF动图的间隔时间
2、代码实现
import imageio
def create_gif(image_list,gif_name,duration=0.1):
frames=[]
for image_name in image_list:
frames.append(imageio.imread(image_name))
imageio.mimsave(gif_name,frames,'GIF',duration=duration)
return
def main():
image_list=['gif1','gif2','gif3','gif4','gif5','gif6','gif7','gif8','gif9','gif10']
gif_name='cat.gif'
duration=0.1
create_gif(image_list,gif_name,duration)
if __name__=='__main__':
main()
效果如下


PIL库的学习总结及生成GIF的更多相关文章
- Python关于PIL库的学习总结与成果展示
一.关于PIL库的学习总结 PIL(Python Image Library)库是Python语言的第三方库,需要通过pip工具安装.安装PIL库的方法如下,需要注意,安装库的名字是pillow. : ...
- PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)
Hello!今天我们来学习一下这个神奇的图片处理的第三方函数库——PIL库 (本blog部分图片及代码来自网络) 这是一个支持图像存储.显示和处理的函数库,它能够处理几乎所有图像格式,可以完成对图像的 ...
- PIL库学习及运用
了解PIL以及安装. 个方面的功能: (1) 图像归档:对图像进行批处理.生产图像预览.图像格式转换等. (2) 图像处理:图像基本处理.像素处理.颜色处理等. 安装PIL在cmd中输入 pip in ...
- Python PIL库学习笔记
1.PIL简介 Python Imaging Library(缩写为PIL)(在新的版本中被称为Pillow)是Python编程语言的开源库,它增加了对打开,操作和保存许多不同图像文件格式的支持.它适 ...
- python之pillow模块学习--验证码的生成和破解
一.基础学习 在Python中,有一个优秀的图像处理框架,就是PIL库,pip install pillow 示例1 from PIL import Image # 读取当前图片 im = Image ...
- GEOS库的学习之一:介绍和编译
对GEOS库的学习,源于一个项目:要在c++中判断二维平面中两个多边形的关系(无论凹凸).也就是判断两个多边形是否相交.相容等.听起来很简单,可实现起来却比较难,而项目又催得紧.于是我去搜索了一下,看 ...
- Python 之 使用 PIL 库做图像处理
http://www.cnblogs.com/way_testlife/archive/2011/04/17/2019013.html Python 之 使用 PIL 库做图像处理 1. 简介. 图像 ...
- Numpy库的学习(三)
今天我们继续学习一下Numpy库的学习 废话不多说 ,开始讲 比如我们现在想创建一个0-14这样一个15位的数组 可以直接写,但是很麻烦,Numpy中就给我们了一个方便创建的方法 numpy中有一个a ...
- 纯代码系列:Python实现验证码图片(PIL库经典用法用法,爬虫12306思路)
现在的网页中,为了防止机器人提交表单,图片验证码是很常见的应对手段之一.这里就不详细介绍了,相信大家都遇到过. 现在就给出用Python的PIL库实现验证码图片的代码.代码中有详细注释. #!/usr ...
随机推荐
- EF 太重,MyBatis 太轻,ORM 框架到底怎么选 ?
以 EF 为代表的基于 Linq 的 ORM 框架总是 很重. 他们的功能早已超出了一个 ORM 的范畴, ORM 是 Object Relational Mapping ,从名字上看,其初衷是将 数 ...
- Fetch+SpringBoot跨域请求设置
两种方法从SpringBoot的方向解决跨域问题 今天搭建博客的时候,尝试性的传递数据,发现浏览器报了这个错误 -blocked by CORS policy: No 'Access-Control- ...
- find的基本查询命令《二》
Linux find命令详解 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你 ...
- 01 微信小程序创建组件和使用组件
01 创建组件 遇见的困难 图标显示不出来,是因为你没有在组件的css中引入,所以显示不出来. 我一直以为是一个坑.结果是自己没有整清楚 01==>在page的同级目录下,创建一个文件夹,命名为 ...
- 天天写order by,你知道Mysql底层执行原理吗?
前言 文章首发于微信公众号[码猿技术专栏]. 在实际的开发中一定会碰到根据某个字段进行排序后来显示结果的需求,但是你真的理解order by在 Mysql 底层是如何执行的吗? 假设你要查询城市是苏州 ...
- Flask 入门(八)
flask操作数据库:操作数据: 承接上文: 修改main.py中的代码如下: #encoding:utf-8 from flask_sqlalchemy import SQLAlchemy from ...
- mysql yum源安装
部署服务器环境的时候经常要安装mysql,以下是常见的安装方式 源码安装 rpm包安装 yum源安装 这篇主要介绍yum源安装. yum源下载 进入 https://dev.mysql.com/dow ...
- replace into 影响行数
replace into 影响行数,谈起影响行数,先理解replace into 原理:其是先到表里通过一定规则(单主键或复合主键或唯一索引)找到记录,并且删除,然后在insert into 记录,即 ...
- matlab计算LZ复杂度
我这个计算得14通道,每个通道截取3000个数据得复杂度,最后将计算得出得数据存储到本地txt文档中 function LZC(data) % 计算一维信号的复杂度 % data时间序列 % lzc: ...
- Python基础:按位异或 ^ ,按位或 | ,按位与 &
前言文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http: ...