前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python类库Pillow实现图片裁剪、缩放、效果增强等功能

Python类库Pillow实现图片裁剪、缩放、效果增强等功能

作者头像
申霖
发布2020-02-11 11:36:36
2.6K0
发布2020-02-11 11:36:36
举报
文章被收录于专栏:小白程序猿小白程序猿

首先,表明一个问题,Pillow和PIL不是一个东西,Pillow 是一个对 PIL 友好的分支,两者的作者是不同的,由于PIL的更新计划太慢了,作者计划一年更新两次,有一些问题无法及时解决,导致Pillow的诞生,Pillow在2.0.0版本之后增加了对python3的支持,同时也修复了很多bug。

注意事项

1、 Pillow和PIL不能共存;

2、 Pillow >= 2.1.0 不支持 “import _imaging”。

3、 Pillow >= 2.0.0 支持 Python 版本 2.6, 2.7, 3.2, 3.3, 3.4

4、 Pillow < 2.0.0 支持 Python 版本 2.4, 2.5, 2.6, 2.7

平台支持

安装

1、 使用pip安装,安装命令:

代码语言:javascript
复制
pip install Pillow

此处需要注意pip版本,最低要求为19.3版本。个人在第一次安装时由于pip版本为19.0,导致无法正常安装,需要更新pip,pip的更新命令:

代码语言:javascript
复制
python -m pip install --upgrade pip

更新过程如下图:

2、 easy_install 安装,安装命令:

代码语言:javascript
复制
easy_install Pillow

3、 从 PyPI 下载包,解压安装

代码语言:javascript
复制
python setup.py install

使用

提供了广泛的文件格式支持,高效的内部展现,以及十分强大的图像处理能力。用于图像归档和图像批量处理,你可以使用它建立缩略图,转换格式,打印图片等等,现在的版本可以验证和读取大量的图片格式。

快速入门

1、使用 Image 类,通过引入方式:

代码语言:javascript
复制
from PIL import Image

2、打开图片

代码语言:javascript
复制
im = Image.open('./1163c.jpg')

3、获取图片信息

代码语言:javascript
复制
print(im.format, im.size, im.mode)

输出结果:JPEG (500, 300) RGB

format 这个属性标识了图像来源。如果图像不是从文件读取它的值就是None。size属性是一个二元tuple,包含width和height(宽度和高度,单位都是px)。 mode 属性定义了图像bands的数量和名称,以及像素类型和深度。常见的modes 有 “L” (luminance) 表示灰度图像, “RGB” 表示真彩色图像, and “CMYK” 表示出版图像。

如果文件打开错误,返回 IOError 错误。

4、展示图像

代码语言:javascript
复制
im.show()

windows环境会通过系统默认图片查看工具打开图像。

实例

1、转换文件格式

代码语言:javascript
复制
from PIL import Image, ImageFilter

2、打开图片

代码语言:javascript
复制
im = Image.open('./2023163c.jpg')im.save('alibaba.png')

运行结果:会在目录内生成一个png格式图片。

3、复制图像(区域复制)

矩形选区有一个4元元组定义,分别表示左、上、右、下的坐标。这个库以左上角为坐标原点,单位是px,所以上诉代码复制了一个 300x300 pixels 的矩形选区。这个选区现在可以被处理并且粘贴到原图。

代码语言:javascript
复制
from PIL import Image, ImageFilter
# 打开图片
im = Image.open('./2023163c.jpg')
# 划分复制区域
box = (50, 50, 100, 100)
# 进行复制
region = im.crop(box)

4、图像旋转

代码语言:javascript
复制
region = region.transpose(Image.ROTATE_180)

5、粘贴,及位置设定

代码语言:javascript
复制
im.paste(region, (60, 110))# 生成新的图像im.save("alibaba2.png")

6、 图像裁剪

代码语言:javascript
复制
from PIL import Image, ImageFilter
# 打开图片
im = Image.open('./2023163c.jpg')
# 调整大小
out = im.resize((50, 30))
# 生成图片
out.save("alibaba4.png")

7、图像旋转

代码语言:javascript
复制
from PIL import Image, ImageFilter
# 打开图片
im = Image.open('./2023163c.jpg')
# 旋转度数
out = im.rotate(60)
# 生成图片
out.save("alibaba3.png")

8、颜色模式转换

代码语言:javascript
复制
from PIL import Image, ImageFilter
# 打开图片
im = Image.open('./2023163c.jpg').convert("L")
# 生成图片
im.save("alibaba2.png")

当前版本支持“L”,“RGB”和“CMYK”的之间的所有可能的转换矩阵的参数仅支持“L”和“RGB”。

9、增强图形

要进行更高级的图像增强,可以使用ImageEnhance模块中的类 。从图像创建后,可以使用增强对象快速尝试不同的设置。您可以通过这种方式调整对比度,亮度,色彩平衡和清晰度。

代码语言:javascript
复制
from PIL import Image, ImageFilter, ImageEnhance
# 打开图片
im = Image.open('./1aec37a59acd30725da46e9e2023163c.jpg')
#增强图形(增强(1.3 ),对比度增加30%
enh = ImageEnhance.Contrast(im)
enh.enhance(1.3).show("30% more contrast")

以上就是python类库Pillow对图像的操作,基本上可以满足日常程序需求,冷门的一些知识点没有做讲解,有兴趣的朋友可以前往官网进行查看。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 注意事项
  • 平台支持
  • 安装
  • 使用
  • 快速入门
  • 实例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档