Python的图像处理库pillow使用教程【20210712】

发表于 2020-09-28 17:21:30
阅读 161

介绍

介绍

福哥今天要详情的跟大家讲讲图像处理库pillow的使用技巧,pillow是一个非常强大的图像处理库,基本可以满足日常使用当中的所有图片加工的需求。

学会pillow库的使用技巧,就可以对我们的照片进行自动化的加工处理了。

格式转换

可以使用convert方法转换图片模式

参数说明

  • 1 (1-bit pixels, black and white, stored with one pixel per byte)

  • L (8-bit pixels, black and white)

  • P (8-bit pixels, mapped to any other mode using a colour palette)

  • RGB (3x8-bit pixels, true colour)

  • RGBA (4x8-bit pixels, true colour with transparency mask)

  • CMYK (4x8-bit pixels, colour separation)

  • YCbCr (3x8-bit pixels, colour video format)

  • I (32-bit signed integer pixels)

  • F (32-bit floating point pixels)

示例

下面给出一个示例,将图片打开后,转换成黑白色的图片,并保存起来

from PIL import Image

im = Image.open("demo.jpg")
im = im.convert("1")
im.save("demo_bw.jpg")

原图

6ebcb3d6817d3172.jpg转换后

b4b68dbd0226ac91.jpg

滤镜

可以使用filter方法对图片使用滤镜进行处理

参数

  • 高斯模糊 ImageFilter.GaussianBlur

  • 普通模糊 ImageFilter.BLUR

  • 边缘增强 ImageFilter.EDGE_ENHANCE

  • 找到边缘 ImageFilter.FIND_EDGES

  • 浮雕 ImageFilter.EMBOSS

  • 轮廓 ImageFilter.CONTOUR

  • 锐化 ImageFilter.SHARPEN

  • 平滑 ImageFilter.SMOOTH

  • 细节 ImageFilter.DETAIL

示例

下面给出一个例子,打开一张图片,对图片镜像模糊处理,并保存起来

from PIL import Image
from PIL import ImageFilter

im = Image.open("demo.jpg")
im = im.filter(ImageFilter.BLUR) 
im.save("demo_blur.jpg")

原图

6ebcb3d6817d3172.jpg

加工后

4fba8b623120c1d9.jpg

对比度

调整图片对比度可以使用ImageEnhance库

示例

下面给出一个例子

from PIL import Image
from PIL import ImageEnhance

im = Image.open("demo.jpg")

# 调整亮度
mod = ImageEnhance.Brightness(im)
im = mod.enhance(1.2)

# 调整色彩
mod = ImageEnhance.Color(im)
im = mod.enhance(1.2)

# 调整对比度
mod = ImageEnhance.Contrast(im)
im = mod.enhance(1.2)

# 调整锐度
mod = ImageEnhance.Sharpness(im)
im = mod.enhance(1.2)

im.save("demo_mod.jpg")

原图

6ebcb3d6817d3172.jpg

加工后

6374a716c2de615c.jpg

旋转

可以使用rotate进行任意角度的旋转,也可以使用transpose进行特殊角度的旋转

transpose参数

  • 水平方向对调 Image.FLIP_LEFT_RIGHT

  • 垂直方向对调 Image.FLIP_TOP_BOTTOM

  • 旋转90度 Image.ROTATE_90

  • 旋转180度 Image.ROTATE_180

  • 旋转270度 Image.ROTATE_270

示例

from PIL import Image

im = Image.open("demo.jpg")
im = im.rotate(15)
im.save("demo_rotate.jpg")

im = Image.open("demo.jpg")
im = im.transpose(Image.FLIP_LEFT_RIGHT)
im.save("demo_flip.jpg")

原图

6ebcb3d6817d3172.jpg

加工后

9d70c32601de52e9.jpg3ae2cc0378388c91.jpg

类型转换

使用pillow转换图片类型就是直接存成响应的扩展名的图片即可

示例

转成png类型

from PIL import Image

im = Image.open("demo.jpg")
im = im.convert("RGB")
im.save("demo.png")

缩放

可以使用resize方法简单的对图片的尺寸继续缩放

示例

将图片缩小至300*230尺寸

from PIL import Image

im = Image.open("demo.jpg")
im = im.resize((300, 230))
im.save("demo_resize.jpg")

图层

我们可以把图片想成一张图纸,可以使用裁剪技巧将图纸的一部分复印到另一张图纸上,也可以将多张图纸压合成一张图纸,这种图纸可以称之为——图层,和PS软件类型的处理

裁剪

使用crop方法从一张图片上裁剪下拉一部分图像放到一个图层里,这个图层可以单独进行加工处理

粘贴

使用paste方法将一个图像放到另外一个图像里面,合并这两个图层到一起

示例

从图片中间裁剪出来一小块图像,经过黑白处理后,再粘贴回去,合并成一张新图片

from PIL import Image

im = Image.open("demo.jpg")
rect = (500, 250, 800, 550)
part = im.crop(rect)
part = part.convert("1")
im.paste(part, rect)
im.save("demo_mod.jpg")

原图

6ebcb3d6817d3172.jpg

加工后

ad5abbaa62bd874a.jpg

屏幕截图

使用ImageGrab实现屏幕截图的功能

示例

截取全屏画面,存到一个文件里

from PIL import ImageGrab

im = ImageGrab.grab()
im.save("demo_fullscreen.jpg")

截取屏幕左上角的500*500的区域画面

from PIL import ImageGrab

im = ImageGrab.grab((0, 0, 500, 500))
im.save("demo_part.jpg")

9b786bc3a5670a56.jpg

总结

pillow功能很多,而且方法很友好,可以用来对自己的照片进行批量加工处理使用。

今天福哥就给大家介绍到这里了~~