Python P图

摘要:
PythonPILPIL库是Python语言的一个第三方库,PIL库支持图像存储、显示和处理,能够处理几乎所有格式的图片。

Python PIL

PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储、显示和处理,能够处理几乎所有格式的图片。

一、PIL库简介

1. PIL库主要有2个方面的功能:

(1)图像归档:对图像进行批处理、生产图像预览、图像格式转换等。

(2)图像处理:图像基本处理、像素处理、颜色处理等。

2. PIL拥有多个类,此处就其中的Image类、ImageFilter类、ImageEnhance类做简单介绍。

二、安装库函数

pip install pillow

注:由于本机已经安装了PIL库(安装时使用pillow),所以以更新为例,使用 -U 标签可实现更新。

Python P图第1张

Python P图第2张

三、使用库函数Image类 —— 基本图像处理

1. 调用Image类

from PIL import Image

2. Image类关于图像读取与创建

方法

说明

Image.open(filename)

加载图像文件

Image.new(mode,size,color)

根据给定参数创建新图像

Image.open(StringIO.StringIO(buffer))

从字符串中获取图像

Image.frombytes(mode,size,color)

根据像素点创建新图像

Image.verify()

对图像完整性进行检查,返回异常

Python P图第3张

3.Image类的常用属性

方法

说明

Image.format

图像格式或来源,若图像不是从文件读取,返回None

Image.mode

图像的色彩模式,’L’为灰度模式,’RGB’为真彩色图像,’C(青)M(品红)Y(黄)K(黑)’为出版图像

Image.size

图像的宽度和高度,单位是像素(px),返回值为元组类型

Image.palette

调色板属性,返回ImagePalette类型

Python P图第4张

4.Image类的序列图像操作方法

方法

说明

Image.seek(frame)

跳转并返回图像中的指定帧

Image.tell()

返回当前帧的序号

Python P图第5张

5.Image类的图像旋转和缩放方法

方法

说明

Image.resize(size)

返回按size大小调整图像的副本

Image.rotate(angle)

返回按angle角度旋转图像的副本

Python P图第6张

6.Image类的图像转换和保存方法

方法

说明

Image.save(filename,format)

将图像保存为filename文件名,format格式

Image.convert(mode)

将图像转换为mode模式

Image.thumbnail(size)

创建图像的缩略图,size是缩略图尺寸的元组

Example_1:

复制代码
# -*- encoding:utf-8 -*-
''' 改变颜色 --- 颜色反转'''
from PIL import Image
nest = Image.open("D:\nest.jpg")
r,g,b = nest.split()           #获取原图的RGB通道的颜色值
newb = b.point(lambda i:i*1.1) #将B通道的颜色值增强
nest1 = Image.merge(nest.mode,(b,g,r))
nest1.thumbnail((400,254))     #创建缩略图
nest1.save("D:\nest_2.jpg")
复制代码

原图与效果图对比:

Python P图第9张

7.Image类的图像像素和通道处理方法

方法

说明

Image.point(func)

根据函数func的功能对每个元素进行运算,返回图像副本

Image.split()

根据GRB图像的每个颜色通道,返回图像副本

Image.merge(mode,bands)

合成通道,其中mode为色彩,bands为新的色彩通道

Image.blend(im1,im2,alpha)

将2张图片im1和im2按照公式插值后生成新图像

公式:im1*(1.0 - alpha) + im2*alpha

四、使用库函数ImageFilter类 —— 图像过滤

1.调用ImageFilter类

from PIL import ImageFilter

2.ImageFilter类预定义图像过滤方法

方法

说明

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

图像的锐化效果

Example_2:

复制代码
# -*- encoding:utf-8 -*-
''' 轮廓效果 --- 素描 '''
from PIL import Image
from PIL import ImageFilter
square = Image.open("D:\square.jpg")
square1 = square.filter(ImageFilter.CONTOUR)  #选择轮廓效果
square1.save("D:\square0.jpg")
复制代码

原图:

Python P图第12张

效果图:

Python P图第13张

五、使用库函数ImageEnhance类 —— 图像增强

1.调用ImageEnhance类

from PIL import ImageEnhance

2.ImageEnhance类图像增强与滤镜方法

方法

说明

ImageEnhance.enhance(factor)

对所选属性的数值增强factor倍

ImageEnhance.Color(im)

调整图像的颜色平衡

ImageEnhance.Contrast(im)

调整图像的对比度

ImageEnhance.Brightness(im)

调整图像的亮度

ImageEnhance.Sharpness(im)

调整图像的锐度

Example_3:

复制代码
# -*- encoding:utf-8 -*-
''' 亮度增强 --- 曝光 '''
from PIL import Image
from PIL import ImageEnhance
gz = Image.open("D:\gz.jpg")
gz1 = ImageEnhance.Brightness(gz)     #选择亮度
gz1.enhance(2).save("D:\gz1.jpg")    #将亮度增强2倍后保存
复制代码

原图对比效果图:

Python P图第16张

免责声明:文章转载自《Python P图》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Delphi连接Oracle控件ODAC的安装及使用windows ntp安装及调试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

可用的rtmp互联网地址

Rtmp:vlc使用ffmpeg获取Rtmp网络流。代码文件路径:vlc-2.2.1 modulesassesavio。hvlc-2.2.1模块。c在模块的开放回调函数OpenAvio中,使用以下代码打开rtmp网络流。avio_打开(&avio_FLAG_READ);//或者这个avio_open2(&sys-&gt...

最新版Swagger 3升级指南和新功能体验!

因此,本期将为您带来一篇关于Swagger最新版本的文章。本文将向您展示Swagger最新版本的变化?如何将旧版本的Swagger升级到新版本?Swagger是一个用于生成、描述和调用RESTful接口的Web服务。Swagger 2.9.2的使用分为以下四个步骤:添加依赖项、启用Swagger功能、配置Swagger文档摘要信息和调用接口访问。让我们分别来...

ROS学习之日志消息

ROS日志系统的核心思想是使程序生成一些短文本字符流,这些短文本字符是日志消息。ROS_…_ STREAM_ THROTTLE宏的每个实例在第一次执行时都会生成一条日志消息,随后的执行将被忽略,直到经过指定的时间间隔。...

vue 数组push元素 视图没更新

Vue包含一组用于观察数组的变异方法,因此它们也会触发视图更新。这些方法如下:push()pop()shift()unshift()split()sort()reverse()问题描述:在tap列下,向每个选项卡添加一行数据,可以一直添加默认行。切换到选项卡1时,阵列已成功添加,但视图未更改。来回切换后手动更新分析:由于JavaScript限制,Vue无法检...

隔板法

分区法用于将n个球变成m个盒子:(1)不允许为空:n个球放在m个盒子中,而n-1个球是通过用m-1个分区分隔n个球来放置的,因此Cn-1,m-1(2)可以为空:m个盒子里放n个球,可以为空。首先想象m个球被放置在m个盒子中,每个盒子一个,然后手中的n个球被分配到m个盒子。此时,箱子不能为空。此时,我们使用n+m个球,如果我们取出m个球的话,我们可以得到n个球...

怎样能使winform窗体的大小固定住,不能调整其大小

Form1.TopMost=真/假10.将窗体设置为部分透明窗体1.透明键。它接受颜色值。当表单中的颜色与设置的颜色一致时,系统将这些颜色的区域设置为透明。事件1.激活和停用:窗体的活动和非活动状态,即鼠标的焦点和非焦点状态;2.在关闭过程中();您可以取消以关闭此事件。...