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

发布时间:2020-01-04 15:55:17 浏览量:1273 标签: Python

首先,表明一个问题,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安装,安装命令:

pip install Pillow

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

python -m pip install --upgrade pip

更新过程如下图:



2、 easy_install 安装,安装命令:

easy_install Pillow


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

python setup.py install

使用

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

快速入门

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

from PIL import Image


2、打开图片

im = Image.open('./1163c.jpg')


3、获取图片信息

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、展示图像

im.show()

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


实例

1、转换文件格式

from PIL import Image, ImageFilter


2、打开图片

im = Image.open('./2023163c.jpg')im.save('alibaba.png')

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


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

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

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


4、图像旋转

region = region.transpose(Image.ROTATE_180)


5、粘贴,及位置设定

im.paste(region, (60, 110))# 生成新的图像im.save("alibaba2.png")


6、 图像裁剪

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


7、图像旋转

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


8、颜色模式转换

from PIL import Image, ImageFilter
# 打开图片
im = Image.open('./2023163c.jpg').convert("L")
# 生成图片
im.save("alibaba2.png")

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


9、增强图形

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

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对图像的操作,基本上可以满足日常程序需求,冷门的一些知识点没有做讲解,有兴趣的朋友可以前往官网进行查看。



评论
登录后才可以进行评论哦! QQ登录
验证码
评论内容