图片处理在今天是非常重要的,无论是在个人生活中还是在工作中,我们总要涉及到图片处理的问题。常见的图片处理软件有Photoshop、GIMP等,但对于一些小问题或者图像处理的初学者来说,这些软件显得有些过于复杂和高大上。那么有没有一款简单实用,易于上手的图像处理库呢?答案当然是肯定的。Python Imaging Library,简称PIL,就是这样一款库,它提供了一系列简单而有用的函数和方法,让我们轻松解决小问题。下面我们就来详细了解一下PIL库。
PIL库介绍
Python Imaging Library(PIL)是Python中的一个图像处理库,也是目前Python中最流行的图像处理库之一。它于2009年停止更新,转由Pillow代替,但其仍然在很多项目中得到广泛应用,同时Pillow也继承了PIL的优点。 PIL库提供了许多函数,这些函数可以处理常见的图像格式,如jpeg、bmp、png、gif、tiff等。它可以打开、创建和保存多种图像格式,还可以进行各种图像转换和图像处理。PIL库提供了方便的函数和工具来修改图像,包括不同尺寸、旋转、裁剪和过滤。通过PIL库,你可以很容易地创建预览图、图标、制作图表和其他图形和可视化应用程序。
安装PIL库
在开始使用PIL库之前,我们需要先将它安装到我们的电脑中。在Python3.x系列的版本中,PIL库已经更名为Pillow,因此我们需要使用pip来安装。打开你的终端或cmd窗口,输入以下指令:
```
pip install Pillow
```
这里我们在Windows系统下使用pip指令安装Pillow库。
PIL库基本使用
Pillow的常用模块是 Image模块,使用前需要导入该模块。下面我们来看一个简单的例子,先将一张图片打开,然后将图片旋转45度,最后再将旋转后的图片保存。
```
from PIL import Image
# 打开图片
im = Image.open("001.jpg")
# 将图片旋转45度
im_rotate = im.rotate(45)
# 保存旋转后的图片
im_rotate.save("001_rotate.jpg")
```
使用Image模块的open()函数来打开图片,函数接收一个文件名或文件路径作为参数。rotate()函数是Image模块中用于旋转图片的函数,它接收一个角度值作为参数,并返回一个旋转后的图片。最后,我们使用save()函数将旋转后的图片保存到文件中。这个例子非常简单,但是它却可以展示PIL库的操作过程,可以让我们轻松处理图片,而不必关心繁琐的细节。
常用函数介绍
1. 打开图片
在PIL库中,我们可以使用open()函数打开图片,然后将图片保存成Image类型的对象,以便我们使用其他函数进行处理。open()函数接收一个文件名或文件路径作为参数,它支持许多不同的文件格式,包括png、jpg、bmp、gif等。下面是一个打开图片的例子:
```
from PIL import Image
# 打开图片
im = Image.open("001.jpg")
```
2. 保存图片
在PIL库中,我们也可以使用save()函数将图片保存为另一个文件,具体使用方法如下:
```
from PIL import Image
# 打开图片
im = Image.open("001.jpg")
# 保存图片
im.save("001.png")
```
3. 获取图片信息
在进行图片处理之前,我们需要先了解原始图片的信息,如图片的大小、格式、宽高等。PIL库提供了一些函数来获取这些信息。下面是获取图片宽高的例子:
```
from PIL import Image
# 打开图片
im = Image.open("001.jpg")
# 获取图片信息
img_size = im.size
img_width, img_height = img_size
```
使用size()函数可以获取图片的大小,它返回(宽,高)的元组。对于整个元组,我们可以使用元组解包来分别获得宽和高。
4. 修改图片尺寸
在处理图片时,我们有时需要调整图片的大小。PIL库提供了resize()函数用于修改图片尺寸。例如可以将图片缩小至原来的一半,具体使用方法如下:
```
from PIL import Image
# 打开图片
im = Image.open("001.jpg")
# 修改图片尺寸
im_resized = im.resize((im.size[0] // 2, im.size[1] // 2))
# 保存图片
im_resized.save("001_resized.jpg")
```
使用resize()函数,将图片缩小至原来的一半。当然,也可以按照自己的需要进行任何尺寸的更改。
5. 翻转和旋转图片
PIL库提供了rotate()函数和transpose()函数分别用于图片旋转和水平或垂直翻转。使用这些函数可以轻松地进行图片翻转和旋转,下面是一个例子:
```
from PIL import Image
# 打开图片
im = Image.open("001.jpg")
# 翻转图片
im_flip = im.transpose(Image.FLIP_LEFT_RIGHT)
# 旋转图片
im_rotate = im.rotate(45)
# 保存图片
im_flip.save("001_flip.jpg")
im_rotate.save("001_rotate.jpg")
```
这里使用transpose()函数将图片水平翻转,rotate()函数将图片旋转45度。PIL库提供了很多旋转角度,并且支持任意角度的旋转。
6. 裁剪图片
有时候我们需要将图片裁剪成特定的大小或形状。PIL库提供了 crop()函数来实现这个功能。crop()函数接收一个表示裁剪后图片的大小和位置的元组作为参数,下面是一个例子:
```
from PIL import Image
# 打开图片
im = Image.open("001.jpg")
# 裁剪图片
im_crop = im.crop((0,0,500,500))
# 保存图片
im_crop.save("001_crop.jpg")
```
这里使用crop()函数将图片裁剪成左上角500×500像素的区域。通过更改参数来裁剪出你所需要的任意一部分。
7. 滤镜效果
PIL库提供了一些预设的滤镜效果,可以让我们轻松地给图片添加美化效果。下面是一个例子:
```
from PIL import Image
from PIL import ImageFilter
# 打开图片
im = Image.open("001.jpg")
# 添加滤镜效果
im_filter = im.filter(ImageFilter.BLUR)
# 保存图片
im_filter.save("001_blur.jpg")
```
这里使用ImageFilter.BLUR滤镜将图片模糊化。PIL库提供了众多其他滤镜效果,你可以通过文档查阅并使用。
总结
PIL库是一款简单实用的图像处理库,它可以轻松地处理大部分图片处理问题。它提供了许多有用的函数和工具,让我们只需要关注对图片的处理,而不必关心繁琐的细节。使用PIL库,我们可以灵活地处理图片,并将其用于许多应用程序。在实践中,我们可以根据自己的需求,结合这些函数使用,从而完成对图片的处理。