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 ...
随机推荐
- Vertica的这些事(十三)——Vertica备份元数据信息
---备份资源池 SELECT 'CREATE RESOURCE POOL ' || name || CASE WHEN memorysize IS NULL THEN ' ' ELSE ' MEMO ...
- GO gRPC教程-环境安装(一)
前言 gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,带来诸如双向流.流控.头部压缩.单 TCP 连接上的多复用请求等特.这些特性使得其在移动设备上表现更好,更省电 ...
- Java中的get()方法和set()方法
在Java中,为了数据的安全,换句话说就是为了隐藏你的代码的一些实现细节,我们会用private来修饰属性,使用private修饰的属性就不能被其他类直接访问了,想要访问就需要通过set.get方法: ...
- eclipse导入项目乱码问题及快键键收集
1.eclipse导入的项目出现乱码,选择该项目,右键选择最下方的Properties,第一个出现的Resource页面: 在Text file encoding项中,选择other. 目前中文编码主 ...
- 1066 Root of AVL Tree (25分)(AVL树的实现)
An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...
- Spring Web Flow 笔记
在Spring 中配置 Web Flow <?xml version="1.0" encoding="UTF-8"?> <beans xmln ...
- DG磁盘分区提示错误
文章更新于:2020-02-26 一.当你使用 DG 分区遇到错误时 1.错误复现 2.解决办法 以管理员身份打开cmd 运行 chkdsk /f /x g:(这里的 g 替换成你要检查的盘符) 然后 ...
- Springboot2(二)通过微信熟悉熟悉Spring-boot yml配置文件
前言:Spring-boot的yml配置文件,这里就不在借助人.狗介绍了,试试套下微信! 创建yml文件 值得注意的是下图中有三种命名方法,前两种是对的,且第二种必须是横线而不是下划线! yml文件的 ...
- javascript入门 之 zTree (一)
1.安装: 我用的bower工具,所以执行: bower install ztree 2.详细功能与配制,请考官方文档: http://www.treejs.cn/v3/main.php#_zTree ...
- 个人项目 wc.exe
GitHub地址:https://github.com/oAiuo/wordCount 一.题目描述 Word Count1. 实现一个简单而完整的软件工具(源程序特征统计程序).2. 进行单元测试. ...