Python类库Pillow实现图片裁剪、缩放、效果增强等功能
首先,表明一个问题,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对图像的操作,基本上可以满足日常程序需求,冷门的一些知识点没有做讲解,有兴趣的朋友可以前往官网进行查看。