1. 简介

Python传统的图像处理库PIL(Python Imaging Library ),可以说基本上是Python处理图像的标准库,功能强大,使用简单。

但是由于PIL不支持Python3,而且更新缓慢。所以有志愿者在PIL的基础上创建了一个分支版本,命名为Pillow,Pillow目前最新支持到python3.6,更新活跃,并且增添了许多新的特性。所以我们安装Pillow即可。

2. 安装

Pillow的安装比较的简单,直接pip安装即可:

pip install Pillow

但是要注意的一点是,Pillow和PIL不能共存在同一个环境中,所以如果安装的有PIL的话,那么安装Pillow之前应该删除PIL。

由于是继承自PIL的分支,所以Pillow的导入是这样的:

import PIL

# 或者

from PIL import Image

3. Image

Image是Pillow中最为重要的类,实现了Pillow中大部分的功能,这个类的主要用来表示图片对象。要创建这个类的实例主要有三个方式:

从文件加载图像

处理其他图像获得

创建一个新的图像

3.1. 读取图像

一般来说,我们都是都过从文件加载图像来实例化这个类,如下所示:

from PIL import Image

picture = Image.open('happy.png')

如果没有指定图片格式的话,那么Pillow会自动识别文件内容为文件格式。

3.2. 新建图像

Pillow新建空白图像使用new()方法, 第一个参数是mode即颜色空间模式,第二个参数指定了图像的分辨率(宽x高),第三个参数是颜色。

可以直接填入常用颜色的名称。如'red'。

也可以填入十六进制表示的颜色,如#FF0000表示红色。

还能传入元组,比如(255, 0, 0, 255)或者(255, 0, 0)表示红色。

picture = Image.new('RGB', (200, 100), 'red')

3.3. 保存图像

保存图片的话需要使用save()方法:

picture.save('happy.png')

保存的时候,如果没有指定图片格式的话,那么Pillow会根据输入的后缀名决定保存的文件格式。

3.4. 图像的坐标表示

在Pillow中,用的是图像的左上角为坐标的原点(0,0),所以这意味着,x轴的数值是从左到右增长的,y轴的数值是从上到下增长的。

我们处理图像时,常常需要去表示一个矩形的图像区域。Pillow中很多方法都需要传入一个表示矩形区域的元祖参数。

这个元组参数包含四个值,分别代表矩形四条边的距离X轴或者Y轴的距离。顺序是(左,顶,右,底)。其实就相当于,矩形的左上顶点坐标为(左,顶),矩形的右下顶点坐标为(右,底),两个顶点就可以确定一个矩形的位置。

右和底坐标稍微特殊,跟python列表索引规则一样,是左闭又开的。可以理解为[左, 右)和[顶, 底)这样左闭右开的区间。比如(3, 2, 8, 9)就表示了横坐标范围[3, 7];纵坐标范围[2, 8]的矩形区域。

3.5. 常用属性

PIL.Image.filename

图像源文件的文件名或者路径,只有使用open()方法创建的对象有这个属性。

类型:字符串

PIL.Image.format

图像源文件的文件格式。

PIL.Image.mode

图像的模式,一般来说是“1”, “L”, “RGB”, 或者“CMYK” 。

PIL.Image.size

图像的大小

PIL.Image.width

图像的宽度

PIL.Image.height

图像的高度

PIL.Image.info

图像的一些信息,为字典格式

3.6. 常用方法

3.6.1. 裁剪图片

Image使用crop()方法来裁剪图像,此方法需要传入一个矩形元祖参数,返回一个新的Image对象,对原图没有影响。

croped_im = im.crop((100, 100, 200, 200))

3.6.2. 复制与粘贴图像

复制图像使用copy()方法:

copyed_im = im.copy()

粘贴图像使用paste()方法:

croped_im = im.crop((100, 100, 200, 200))

im.paste(croped_im, (0, 0))

im对象调用了paste()方法,第一个参数是被裁剪下来用来粘贴的图像,第二个参数是一个位置参数元祖,这个位置参数是粘贴的图像的左顶点。

3.6.3 调整图像的大小

调整图像大小使用resize()方法:

resized_im = im.resize((width, height))

resize()方法会返回一个重设了大小的Image对象。

3.6.4. 旋转图像和翻转图像

旋转图像使用rotate()方法,此方法按逆时针旋转,并返回一个新的Image对象:

# 逆时针旋转90度

im.rotate(90)

im.rotate(180)

im.rotate(20, expand=True)

旋转的时候,会将图片超出边界的边角裁剪掉。如果加入expand=True参数,就可以将图片边角保存住。

翻转图像使用transpose():

# 水平翻转

im.transpose(Image.FLIP_LEFT_RIGHT)

# 垂直翻转

im.transpose(Image.FLIP_TOP_BOTTOM)

3.6.5. 获取单个像素的值

使用getpixel(xy)方法可以获取单个像素位置的值:

im.getpixel((100, 100))

传入的xy需要是一个元祖形式的坐标。

如果图片是多通道的,那么返回的是一个元祖。

3.6.6. 通过通道分割图片

split()

split()可以将多通道图片按通道分割为单通道图片:

R, G, B = im.split()

split()方法返回的是一个元祖,元祖中的元素则是分割后的单个通道的值。

getchannel(channel)

getchannel()可以获取单个通道的数据:

R = im.getchannel("R")

3.6.7. 加载图片全部数据

我们可以使用load()方法加载图片所有的数据,并比较方便的修改像素的值:

pixdata = im.load()

pixdata[100,200] = 255

此方法返回的是一个PIL.PyAccess,可以通过这个类的索引来对指定坐标的像素点进行修改。

3.6.8. 关闭图片并释放内存

此方法会删除图片对象并释放内存

im.close()

python3.6 pillow,【Pillow】Python图像处理相关推荐

  1. python3里的pillow怎么安装_“python安装pillow教程“python3.4怎么安装pil

    "python安装pillow教程"python3.4怎么安装pil python安装pillow教程2020-10-09 03:37:02人已围观 如何在python3.6中装p ...

  2. python 图像处理(从安装Pillow开始)

    python 图像处理(从安装Pillow开始) python2.x及以下用的是PIL(图像处理库是 PIL(Python Image Library)),最新版本是 1.1.7  可在http:// ...

  3. pillow是python的图像处理标准库_详解Python图像处理库Pillow常用使用方法

    pil(python image library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了. 其官方主页为:pil. pil ...

  4. python 图像处理_Python常用库-Pillow图像处理

    阅读文本大概需要 2.6 分钟. 在Pyhton图像库「Python Imaging Library」支持大量的图片格式,是图像处理和批处理的最佳选择,可以用这个来创建缩略图.文件格式之间的转换.打印 ...

  5. python图像处理:PIL与Pillow区别

    在学习python图像处理时,傻傻的分不清PIL和Pillow,于是简单整理一下二者区别. 一.PIL PIL全称是:Python Imaging Library. PIL是一个强大的.方便的pyth ...

  6. 简单实用的Python图像处理库Pillow

    Pillow图像处理 Pillow 库的安装 图象处理基本知识 图像的RGB 色彩模式 像素阵列 Image 模块 打开和新建 混合 透明度混合处理 遮罩混合处理 复制和缩放 复制图像 缩放像素 缩放 ...

  7. pillow属于python标准库吗_详解Python图像处理库Pillow常用使用方法

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了. 其官方主页为:PIL. PIL ...

  8. Python图像处理库Pillow(PIL)的简单使用

    一.PIL和Pillow图像处理库 图像库PIL(Python Image Library)是Python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像 ...

  9. nodejs 图片处理模块 rotate_学会Pillow再也不用PS啦——Python图像处理库Pillow入门!...

    你在用什么软件进行图像处理呢?厌倦了鼠标和手指的拖拖点点,想不想用程序和代码进行图像的高效处理,Python作为简单高效又很强大的一门编程语言,对于图像的处理自然也是轻松拿下,听起来是不是很酷很极客, ...

  10. pil对图像加透明 python_使用Python图像处理库Pillow处理图像文件

    文/江红  本文来源<Python程序设计与算法基础教程(第2版)-微课版> 本案例通过使用Python图像处理库Pillow,帮助读者进一步了解Python的基本概念:模块.对象.方法和 ...

最新文章

  1. Linux网络 - 数据包的发送过程
  2. 前瞻:在 Java 16 中会带来哪些新特性?
  3. 2016年股市上扬将一路顺畅
  4. cloud foundry_实际的Reactor操作–检索Cloud Foundry应用程序的详细信息
  5. 【每日scrum】NO.5
  6. java浮点数数转二进制的数吗_深入理解计算机系统(2.7)-二进制小数和IEEE浮点标准 - Java 技术驿站-Java 技术驿站...
  7. 【转载】几个比较靠谱的即时通讯软件
  8. Address already in use: JVM_Bind 8083端口被占用的几个解决办法
  9. 基于JavaScript实现网页计算器
  10. Google Analytics是什么
  11. 移动机器人速度空间对比分析
  12. STL中容器的介绍及分类
  13. 常用的工业控制计算机有哪几类,工业控制计算机在行业应用中都有哪些特点?...
  14. html网页在线加密解密工具源码
  15. ipa文件缓存服务器,ipa文件包获取服务器地址
  16. Discuz最全的常见问题及故障整理
  17. Apache Hadoop大数据集群及相关生态组件安装
  18. MySQL数据库——MySQL是什么?它有什么优势?
  19. 打印模板-Zebra指令
  20. 如何去开发一个webApp

热门文章

  1. go 服务器压力测试,Go的单元测试与压力测试
  2. 解决:远程服务器(阿里云 VHost)和本地文件传输 windows
  3. 拼多多商品详情查询V1新版接口
  4. word在任意页面添加页码
  5. CPU线程与超线程技术
  6. 电脑里删除的文件怎么恢复,数据恢复方法大全
  7. python死循环_怎么避免Python程序出现死循环(无限循环)?
  8. 《引爆点》学习笔记二
  9. win7共享wifi自动获取不到ip地址的解决办法
  10. 如何用GraphPad Prism 进行pearson相关性分析