• 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()

    效果如下

  • 相关阅读:
    iOS 关于字体根据不同屏幕尺寸等比适配的问题(zz)
    安卓开发:一种快速提取安卓app的UI图标资源的方法
    申请邓白氏编码的时候总是提示 Enter a valid Street Address 怎么办?
    利用日期、经纬度求日出日落时间 C语言程序代码(zz)
    JS导出Excel 代码笔记
    Bootstrap系列 -- 44. 分页导航
    Bootstrap系列 -- 43. 固定导航条
    Bootstrap系列 -- 42. 导航条中的按钮、文本和链接
    Bootstrap系列 -- 41. 带表单的导航条
    Bootstrap系列 -- 40. 导航条二级菜单
  • 原文地址:https://www.cnblogs.com/qinlai/p/12732393.html
Copyright © 2020-2023  润新知