【Python】PIL库介绍
概述
PIL(Python Imaging Library)是Pythonn中最常用的图像处理库,PIL支持图像存储、显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放、裁剪、叠加以及图像添加线条、图像和文字等操作。根据功能的不同,PIL库共包括21个与图片相关的类,这些类可以被看做是子库或PIL库中的模块,Image是最常用的类(其他的类就不在此一一列出)。
PIL库主要可以实现图像归档和图像处理两方面的功能需求。
● 图像归档:对图像进行批处理、生成图像预览、图片格式转换等。
● 图像处理:图像基本处理、像素处理、颜色处理等。
import PIL
Image类
from PIL import Image
1. 文件的读取和创建
方法 | 描述 |
---|---|
Image.open(filename) | 根据参数加载图片文件 |
Image.new(mode,size,color) | 根据参数创建一个新的图像 |
Image.frombytes(mode,size,date) | 根据像素点date创建图像 |
Image.open(StringIO,StringIO(buffer)) | 从字符串获取图像 |
Image.verify() | 对图像文件完整性进行检查,返回异常 |
2. Image类的常用属性
属性 | 描述 |
---|---|
Image.format | 识别图像格式或来源,如果图像不是从文件读取,值为None |
Image.mode | 图像的色彩模式,“L”为灰色图像、“RGB”为真彩色图像、“CMYK”为出版图像 |
Image.size | 图像的宽度和高度,单位是像素,返回值是二元元祖(tuple) |
Image.palette | 调色板属性,返回一个ImagePalette类型 |
3. Image读取序列类图像文件
Image还能读取序列类图像文件,包括 gif / fli / flc / tiff 等文件格式。open()方法打开一个图像时自动加载序列中的第一帧,使用seek()和tell()方法在不同帧之间的移动。
方法 | 描述 |
---|---|
Image.seek(frame) | 跳转并返回图像中的指定帧 |
Image.tell | 返回当前帧的序列 |
4. Image类的图像转换和保存方法
方法 | 描述 |
---|---|
Image.save(filename, format) | 将图像保存为filename文件名,format是图片格式 |
Image.convert(mode) | 使用不同的参数,转换图像为新的模式 |
Image.thumbnail(size) | 创建图像的缩略图,size是缩略图尺寸的二元元祖 |
5. Image类的图像旋转和缩放方法
方法 | 描述 |
---|---|
Image.resize(size) | 按size大小调整图像,生成副本 |
Image.rotate(angle) | 按angle角度旋转图像,生成副本 |
6. Image类对像素点、通道单独操作
Image类能够对每个想像素点或者一幅RGB图像的每个通道单独进行操作。split()方法能够将RGB图像通道提取出来,merge()方法能够将各独立通道再合成一幅新的图像。
方法 | 描述 |
---|---|
Image.point(func) | 根据函数func的功能对每个元素进行运算,返回图像副本 |
Image.split() | 提取RGB图像的每个颜色通道,返回图像副本 |
Image.merge(mode,bands) | 合并通道,其中mode表示色彩,bands表示新的色彩通道 |
Image.blend(im1,im2,alpha) | 将两幅图片im1和im2按照如下公式插值后生成新的图像:im1*(1.0-alpha)+im2*alpha |
7. 图像过滤
PIL库的ImageFilter类提供图像过滤的方法。
from PIL import ImageFilter
方法 | 描述 |
---|---|
ImageFilter.BLUR | 图像的模糊效果 |
ImageFilter.CONTOUR | 图像的轮廓效果 |
ImageFilter.DETAIL | 图像的细节效果 |
ImageFilter.EDGE_ENHANCE | 图像的边界加强效果 |
ImageFilter.EDGE_ENHANCE_MODE | 图像的阈值边界加强效果 |
ImageFilter.EMBOSS | 图像的浮雕效果 |
ImageFilter.FIND_EDGES | 图像的边界效果 |
ImageFilter.SMOOTH | 图像的平滑效果 |
ImageFilter.SMOOTH_MORE | 图像的阈值平滑效果 |
ImageFilter.SHARPEN | 图像的锐化效果 |
利用Image类的filter()方法可以使用ImageFilter类,使用方法如下:
Image.filter(ImageFilter.function)
7. 图像增强
ImagEnhance类提供了更高级的图像增强功能,如调整色彩度、亮度、对比度、锐化等。
from PIL import ImagEnhance
方法 | 描述 |
---|---|
ImageEnhance.enhance(factor) | 对选择属性的数值增强factor倍 |
ImageEnhance.Color(im) | 调整图像的颜色平衡 |
ImageEnhance.Contrast(im) | 调整图像的对比度 |
ImageEnhance.Brightness(im) | 调整图像的亮度 |
ImageEnhance.Sharpness(im) | 调整图像的锐度 |
【Python】PIL库介绍相关推荐
- python123九宫格输入_使用python PIL库实现简单验证码的去噪方法步骤
字符型图片验证码识别完整过程及Python实现的博主,我的大部分知识点都是从他那里学来的. 想要识别验证码,收集足够多的样本后,首先要做的就是对验证码原始图片进行处理,对验证码识别分类之前,一般包括: ...
- 《利用Python进行数据分析·第2版》第13章 Python建模库介绍
第1章 准备工作 第2章 Python语法基础,IPython和Jupyter 第3章 Python的数据结构.函数和文件 第4章 NumPy基础:数组和矢量计算 第5章 pandas入门 第6章 数 ...
- Python数据分析学习系列 十三 Python建模库介绍
Python数据分析学习系列 十三 Python建模库介绍 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下载 ...
- 【利用Python进行数据分析】13 - Python建模库介绍
第十三章 Python建模库介绍 1.pandas与模型代码的接口 2.用Patsy创建模型描述 2.1.Patsy创建模型设计矩阵 2.2.用Patsy公式进行数据转换 2.3.分类数据和Patsy ...
- 使用Python PIL库实现简单验证码的去噪处理
想要识别验证码,收集足够多的样本后,首先要做的就是对验证码原始图片进行处理,对验证码识别分类之前,一般包括:将彩色图片转换成灰度图.将灰度图二值化和去除噪点三个基本过程.这里仅以比较简单的验证码为例, ...
- 利用python进行数据分析——第13章 python建模库介绍
文章目录 一.pandas与建模代码的结合 二.使用patsy创建模型描述 2.1Patsy公式中的数据转换 2.2分类数据与Patsy 三.statsmodels介绍 3.1评估线性模型 3.2评估 ...
- 第十三篇 Python建模库介绍
前面已经介绍了Python数据分析的编程基础.数据分析师和科学家总是在数据规整和准备上花费⼤量时间,前面部分的重点在于掌握这些功能. 开发模型选⽤什么库取决于应⽤本身.许多统计问题可以⽤简单⽅法解决, ...
- 第13章 Python建模库介绍--Python for Data Analysis 2nd
本书中,我已经介绍了Python数据分析的编程基础.因为数据分析师和科学家总是在数据规整和准备上花费大量时间,这本书的重点在于掌握这些功能. 开发模型选用什么库取决于应用本身.许多统计问题可以用简单方 ...
- 使用Python PIL库中的Image.thumbnail函数裁剪图片
发现自己还没有头像,想着上传ubuntu系统中我很喜欢的一个背景图片来当头像,但是因为图片过大,上传失败了.那么,我们如何使用python中强大的PIL库来进行图片裁剪呢? from PIL impo ...
最新文章
- c++以空格分开的输入数组_技术贴,MATLAB矩阵与数组汇总讲解
- MySQL 数据库修改访问权限,不能使用ip连接mysql问题处理:Host ‘host.docker.internal‘ is not allowed to connect to this ...
- rstudio运行python_RStudio 1.2发布,改进对Python chunks,R脚本等的测试和支持
- 一张有趣的图--《teach yourself c++ in 21 days》
- Android的sdk、api及工程目录说明
- 基于SpringBoot项目的https
- JavaScript服务器端高级编程(Array.indexOf()和lastIndexOf()方法)
- jsweet-examples下载测试
- 《云网络:数字经济的连接》图书发布会将于7月16日在杭举行
- ISO 27001解读(一)管理思路
- Data Recovery Strategy Determines Backup Strategy【每日一译】--2012-11-11
- TGA文件格式分析和图片举例
- 利用$randon和seed可以在测试脚本里面产生测试所需的赋值
- 2022-2028年全球与中国救生艇行业市场前瞻与投资战略规划分析
- 【树形DP】 HDOJ 5148 Cities
- Activity子流程——嵌入式流程
- java怎么销毁session_「销毁session」java中session和cookie的创建与销毁
- ADI-trinamic精确控制医疗设备(IVD体外诊断仪器)
- pta:2019来了
- java+mysql简单实现点赞评论转发帖子
热门文章
- ubuntu jdk tomcat mysql_Ubuntu下安装JDK+TOMCAT+MYSQL
- java 两位小数 四舍五入_java里的四舍五入(保留两位小数,返回double类型)
- 嵌入式 U 盘自动挂载
- 05.Qt设置背景图片
- linux多线程学习(二)——线程的创建和退出
- Linux内核分析 - 网络[八补]:IP协议补充
- 从程序员到项目经理(三)
- 条件锁pthread_cond_t 的应用
- java生成unix.z压缩_JAVA压缩 解压缩zip 并解决linux下中文乱码
- qt mysql分页控件_Qt分页布局与切分窗口的实现