当前位置:网站首页 > 编程语言 > 正文

Pilow是什么意思(pilow是什么意思啊)



Pillow作为python的第三方图像处理库,提供了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。

       PIL(Python Image Library)是python的第三方图像处理库,因其强大的功能与众多的使用人数,但由于PIL仅支持到Python 2.7,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。

1) 支持广泛的文件格式

Pillow 支持广泛的图像格式,比如 "jpeg","png","bmp","gif","ppm","tiff" 等。同时,它也支持图像格式之间的相互转换。总之, Pillow 几乎能够处理任何格式的图像。 

2) 提供了丰富的功能

Pillow 提供了丰富的图像处理功能,可概括为两个方面:

  • 图像归档
  • 图像处理

图像归档,包括创建缩略图、生成预览图像、图像批量处理等;而图像处理,则包括调整图像大小、裁剪图像、像素点处理、添加滤镜、图像颜色处理等。

3) 配合GUI工具使用

Pillow 库可以配合 Python GUI(图形用户界面)工具 Tkinter 一起使用。

除上述特点之外,Pillow 库还能实现一些较为复杂的图像处理操作,比如给图像添加水印、合成 GIF 动态效果图等等。

在命令行下通过pip安装:

 

pillow 官方文档地址:https://pillow.readthedocs.io/en/stable/handbook/tutorial.html#using-the-image-class

1.使用Image模块中的open函数打开一张图片

 

 如果成功,这个函数返回Image对象。您现在可以使用实例属性来检查文件内容:

 

 如果文件不能打开,则抛出IOError异常。

2.图像显示

存在Image对象时,就可以利用它来处理操作图像,例如,加载一张图像。

# 图片显示 im.show()

3.保存指定格式的图像

im.save("img/2.png")
 

图片格式之间的转换主要方法

save():

save() 方法用于保存图像,当不指定文件格式时,它会以默认的图片格式来存储;如果指定图片格式,则会以指定的格式存储图片。

save() 的语法格式如下:

 

参数说明如下:

  • fp:图片的存储路径,包含图片的名称,字符串格式;
  • format:可选参数,可以指定图片的格式。

缩略图(thumbnail image)指的是将原图缩小至一个指定大小(size)的图像。通过创建缩略图可以使图像更易于展示和浏览。

Image 对象提供了一个 thumbnail() 方法用来生图像的缩略图,该函数的语法格式如下:

 
  • size:元组参数,指的是缩小后的图像大小;
  • resample:可选参数,指图像重采样滤波器,有四种过滤方式,分别是 Image.BICUBIC(双立方插值法)、PIL.Image.NEAREST(最近邻插值法)、PIL.Image.BILINEAR(双线性插值法)、PIL.Image.LANCZOS(下采样过滤插值法),默认为 Image.BICUBIC。
 

 Pillow 图像剪裁

Image 类提供的 crop() 函数允许我们以矩形区域的方式对原图像进行裁剪,函数的语法格式如下:

 

box:表示裁剪区域,默认为 None,表示拷贝原图像。

注意:box 是一个有四个数字的元组参数 (x_左上,y_左下,x1_右上,y1_右下),分别表示被裁剪矩形区域的左上角 x、y 坐标和右下角 x,y 坐标。默认 (0,0) 表示坐标原点,宽度的方向为 x 轴,高度的方向为 y 轴,每个像素点代表一个单位。

 

 Pillow 图像粘贴

拷贝、粘贴操作几乎是成对出现的,Image 类提供了 copy() 和 paste() 方法来实现图像的复制和粘贴。其中复制操作(即 copy() 方法)比较简单,下面主要介绍 paste() 粘贴方法,语法格式如下所示:

 

该函数的作用是将一张图片粘贴至另一张图片中。注意,粘贴后的图片模式将自动保持一致,不需要进行额外的转换。参数说明如下:

  • image:指被粘贴的图片;
  • box:指定图片被粘贴的位置或者区域,其参数值是长度为 2 或者 4 的元组序列,长度为 2 时,表示具体的某一点 (x,y);长度为 4 则表示图片粘贴的区域,此时区域的大小必须要和被粘贴的图像大小保持一致。
  • mask:可选参数,为图片添加蒙版效果。
 

通过图像粘贴实现图像合并

 

通过图像粘贴实现图像滚动

 

Pillow 图像合并

Image 类提供了用于分离图像和合并图像的方法 split() 和 merge() 方法,通常情况下,这两个方法会一起使用。

merge()

Image 类提供的 merge() 方法可以实现图像的合并操作。注意,图像合并,可以是单个图像合并,也可以合并两个以上的图像。

merge() 方法的语法格式如下:

 

参数说明如下:

  • mode:指定输出图片的模式
  • bands:参数类型为元组或者列表序列,其元素值是组成图像的颜色通道,比如 RGB 分别代表三种颜色通道,可以表示为 (r,g,b)。

温馨注意,该函数会返回一个新的 Image 对象。

 

图像的几何变换主要包括图像翻转、图像旋转和图像变换操作,Image 类提供了处理这些操作的函数 transpose()、rotate() 和 transform(),下面分别对它们进行讲解。

transpose()翻转操作

该函数可以实现图像的垂直、水平翻转,语法格式如下:

 

method 参数决定了图片要如何翻转,参数值如下:

Image.FLIP_LEFT_RIGHT:左右水平翻转;
Image.FLIP_TOP_BOTTOM:上下垂直翻转;
Image.ROTATE_90:图像旋转 90 度;
Image.ROTATE_180:图像旋转 180 度;
Image.ROTATE_270:图像旋转 270 度;
Image.TRANSPOSE:图像转置;
Image.TRANSVERSE:图像横向翻转。

 

rotate()任意角度旋转

当我们想把图像旋转任意角度时,可以使用 rotate() 函数,语法格式如下:

 

参数说明如下:

  • angle:表示任意旋转的角度;
  • resample:重采样滤波器,默认为 PIL.Image.NEAREST 最近邻插值方法;
  • expand:可选参数,表示是否对图像进行扩展,如果参数值为 True 则扩大输出图像,如果为 False 或者省略,则表示按原图像大小输出;
  • center:可选参数,指定旋转中心,参数值是长度为 2 的元组,默认以图像中心进行旋转;
  • translate:参数值为二元组,表示对旋转后的图像进行平移,以左上角为原点;
  • fillcolor:可选参数,填充颜色,图像旋转后,对图像之外的区域进行填充。
 
 

 返回图像的调整大小版本,设置为最大宽度和高度,在要求的尺寸内,同时保持原始的纵横比。

参数说明:

  • image – 要调整大小和裁剪的图像
  • size – 请求的输出大小(以像素为单位),以(宽度、高度)元组的形式给出。
  • method - 默认使用Image.Resampling.BICUBIC,详见过滤器

 

  返回图像的调整大小版本,同时保持原始的纵横比。 

参数说明:

  • image – 要调整大小和裁剪的图像
  • size – 请求的输出大小(以像素为单位),以(宽度、高度)元组的形式给出。
  • method - 默认使用Image.Resampling.BICUBIC,详见过滤器

 

返回图像的调整大小和裁剪版本,裁剪为要求的长宽比和尺寸。 

参数说明:

  • image – 要调整大小和裁剪的图像
  • size – 请求的输出大小(以像素为单位),以(宽度、高度)元组的形式给出。
  • method - 默认使用Image.Resampling.BICUBIC,详见过滤器
  • bleed-图像移除四周边框,该数值为百分比,默认值为0
  • centering-控制裁剪位置。 使用 (0.5, 0.5) 表示中心裁剪
 

返回图像的大小和填充版本,展开以填充请求的纵横比和大小。

参数说明:

  • image – 要调整大小和裁剪的图像。
  • size – 请求的输出大小(以像素为单位),以(宽度、高度)元组的形式给出。
  • method – 使用什么样的重采样方法。默认是 PIL.Image.BICUBIC . 见过滤器 :
  • color – 填充图像的背景色。
  • centering – 控制原始图像在填充版本中的位置。(0.5,0.5)将使图像居中(0,0)将使图像与左上角对齐(1,1)将使图像与右下角对齐
 
 

convert方法可以改变图像的模式(mode),一般是在'RGB'(真彩图)、'L'(灰度图)、'CMYK'(压缩图)之间转换。

 

filter方法可以将一些过滤器操作应用于原始图像,比如模糊,边缘增强、浮雕等。filter是过滤器函数,在PIL.ImageFilter函数中定义了大量内置的filter函数,比如BLUR(普通模糊),GaussianBlur(高斯模糊) FIND_EDGES(查找边)等。

Pillow 通过 ImageFilter 类达到图像降噪的目的,该类中集成了不同种类的滤波器,通过调用它们从而实现图像的平滑、锐化、边界增强等图像降噪操作。常见的降噪滤波器如下表所示:

图像降噪滤波器 名称说明 ImageFilter.BLUR模糊滤波,即均值滤波 ImageFilter.CONTOUR轮廓滤波,寻找图像轮廓信息 ImageFilter.DETAIL细节滤波,使得图像显示更加精细 ImageFilter.FIND_EDGES寻找边界滤波(找寻图像的边界信息) ImageFilter.EMBOSS浮雕滤波,以浮雕图的形式显示图像 ImageFilter.EDGE_ENHANCE边界增强滤波 ImageFilter.EDGE_ENHANCE_MORE深度边缘增强滤波 ImageFilter.SMOOTH平滑滤波 ImageFilter.SMOOTH_MORE深度平滑滤波 ImageFilter.SHARPEN锐化滤波 ImageFilter.GaussianBlur()高斯模糊 ImageFilter.UnsharpMask()反锐化掩码滤波 ImageFilter.Kernel()卷积核滤波 ImageFilter.MinFilter(size)最小值滤波器,从  size 参数指定的区域中 选择最小像素值,然后将其存储至输出图像中。 ImageFilter.MedianFilter(size)中值滤波器,从  size 参数指定的区域中选择中值像素值,然后将其存储至输出图像中。 ImageFilter.MaxFilter(size)最大值滤波器 ImageFilter.ModeFilter()模式滤波
 
 

Pillow 画笔操作

point()方法可用于转换图像的像素值。point()方法接受函数方法对象用户放大/缩放像素值。

 

Pillow 各个波段操作

 

图像增强也是图像预处理中的一个基本技术,Pillow中的图像增强函数主要在ImageEnhance模块下,通过该模块可以调节图像的白平衡(Color)、亮度(Brightness)、对比度(Contrast)和锐化(Sharpness)等。

 

Pillow支持一些动态图片的格式如FLI/FLC,GIF和其他一些处于实验阶段的格式。TIFF文件同样可以包含数帧图像。

当读取动态图时,PIL自动读取动态图的第一帧,可以使用seek和tell方法读取不同帧。

 

温馨提示:当读取到最后一帧时,Pillow抛出EOFError异常。 解决办法:通过动态图迭代器

动态图迭代器类

 
 

ImageDraw

PIL.ImageDraw 模块提供了一系列的绘图方法,通过该模块可以创建一个新的图形,或者在现有的图像上再绘制一个图形,从而起到对原图注释和修饰的作用。

下面创建一个 ImageDraw 对象,并对该对象的使用方法做简单介绍:

 

上述方法会返回一个 ImageDraw 对象,参数 im 表示 Image 对象。这里我们可以把 Image 对象理解成画布,通过调用 ImageDraw 对象的一些方法,实现了在画布上绘制出新的图形目的。ImageDraw 对象的常用方法如下表所示:

ImageDraw常用方法 方法说明text在图像上绘制文字line绘制直线、线段eclipse绘制椭圆形rectangle绘制矩形polygon绘制多边形
 

ImageFont

PIL.ImagreFont 模块通过加载不同格式的字体文件,从而在图像上绘制出不同类型的文字,比如 TrueType 和 OpenType 类型的字体。

创建字体对象的语法格式如下:

 

如果想要在图片上添加文本,还需要使用 ImageDraw.text() 方法,语法格式如下:

 

参数说明如下:

  • (x,y):图像左上角为坐标原点,(x,y) 表示添加文本的起始坐标位置;
  • text:字符串格式,要添加的文本内容;
  • font:ImageFont 对象;
  • fill:文本填充颜色。
 

NumPy 是 Python 科学计算的基础数据包,它被大量的应用于机器学习领域,比如图像识别、自然语言处理、数据挖掘等。

ndarray 是 NumPy 中的数组类型,也称为 ndarray 数组,该数组可以与 Pillow 的 PIL.Image 对象实现相互转化。

ndarray数组创建图像

下面通过 ndarray 数组构建一个 Image 对象,并将图像显示出来。示例如下:

 

图像转化为ndarray数组

下面将图像以 ndarray 数组的形式进行输出,示例如下:

 
  • 基本模式
 
  • 读取来源于open图像资源
 
  • 读取二进制图像资源
 
  • 读取基于图像URL地址
 
  • 读取压缩文件
 
 

到此这篇Pilow是什么意思(pilow是什么意思啊)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 电力104协议(电力104协议 FTO)2025-04-04 22:36:10
  • tip期刊投稿(tip期刊投稿要求)2025-04-04 22:36:10
  • linux 怎么安装yum(linux 怎么安装vim)2025-04-04 22:36:10
  • 密码仓库(仓库密码是什么)2025-04-04 22:36:10
  • 线上小程序制作多少钱(小程序制作一个需要多少钱!每年都需要交钱吗)2025-04-04 22:36:10
  • 苹果的特殊符号在哪儿(苹果的特殊符号在哪儿找)2025-04-04 22:36:10
  • .exe文件反编译(exe文件反编译)2025-04-04 22:36:10
  • 跨阈步态是什么步态(跨阈步态是什么样)2025-04-04 22:36:10
  • 字体的图标(字体图标和svg图标的区别)2025-04-04 22:36:10
  • 我的世界加速指令怎么关闭(我的世界加速指令怎么关闭手机版)2025-04-04 22:36:10
  • 全屏图片