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() 对图像完整性进行检查,返回异常

例如:要加载一个图像文件,最简单如下

1 from PIL import Image
2 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、代码实现

 1 import imageio 
 2 def create_gif(image_list,gif_name,duration=0.1):
 3     frames=[]
 4     for  image_name in image_list:
 5         frames.append(imageio.imread(image_name))
 6     imageio.mimsave(gif_name,frames,'GIF',duration=duration)
 7     return
 8 def main():
 9     image_list=['gif1','gif2','gif3','gif4','gif5','gif6','gif7','gif8','gif9','gif10']
10     gif_name='cat.gif'
11     duration=0.1
12     create_gif(image_list,gif_name,duration)
13 if __name__=='__main__':
14     main()

效果如下

原文地址:https://www.cnblogs.com/qinlai/p/12732393.html