Python PIL(Python Imaging Library)是一款处理图片的强大工具库,可用于图像处理和图像生成,支持多种格式的图片解析与生成。
安装PIL
在安装过程中我们可以使用pip直接下载安装:
pip install pillow
如果需要安装指定的版本,则需要使用下列命令:
pip install pillow==version_number
PIL 图片处理
这里将展示如何使用PIL处理图片,包括的功能有:图片的裁剪,图片的缩小,图片的放大,图片水印的添加等操作。
图片裁剪
首先需要引入Image类库:
from PIL import Image
接下来我们加载要裁剪的图片,可以使用open方法:
img = Image.open('image.jpg')
接下来我们需要对图片进行裁剪,使用crop方法:
crop_img = img.crop((left, upper, right, lower))
其中参数left,upper,right,lower代表矩形裁剪框左上角和右下角的坐标。
图片缩小
PIL 提供了多种方法处理图像大小变换方面的任务。
可以使用resize方法缩小一个图片,在 resize() 方法里面指定要满足的宽度和高度即可。
img = img.resize((width, height))
但是使用resize会破坏图片的原始宽高比,所以更好的方法是使用thumbnail方法:
thumbnail() 方法接受一个 size 元组,并按照比例缩小图像。占据指定的 rectangle,但不必进一步裁剪。如果指定了尺寸,则图像可能被扭曲:
img.thumbnail((width, height))
图片放大
如果需要放大图片,可以使用resize方法:
img = img.resize((width, height))
但是会破坏图片的原始宽高比。如果不想破坏图片的原始宽高比,可以使用thumbnail方法:
img.thumbnail((width, height))
添加水印
添加水印也是一项很常用的操作。我们可以在原始图片上添加一个透明度较低的图片或添加一些文本信息。
添加文字水印
使用PIL可以很方便地向图片添加文字水印,使用Text类库即可。首先需要引入Text类库:
from PIL import ImageFont, ImageDraw
创建一个ImageDraw对象:
draw = ImageDraw.Draw(im)
使用text方法为图片添加文本:
draw.text((x, y), text, fill=color, font=font)
添加图片水印
添加图片水印同样可以使用PIL库实现。先打开相应的图片:
mark_img = Image.open('mark.png')
将mark图片加到主图片上。首先需要把mark图片调整到适合的大小,也就是和主图片区域大小相同:
mark_img.thumbnail((main_image_width, main_image_height))
可以调整图片的混合模式以及透明度:
im.paste(mark_img, (x, y), mask=mark_img)
示例
下面通过实际案例来详细说明PIL的使用。
图片裁剪
如下代码演示了如何使用PIL对图片进行裁剪操作:
from PIL import Image
# 打开要操作的图片
img = Image.open('image.jpg')
# 对图片进行裁剪
crop_img = img.crop((0, 0, 500, 500))
# 显示裁剪后的图片
crop_img.show()
图片缩小
如下代码演示了如何使用PIL对图像进行缩小操作:
from PIL import Image
# 打开要操作的图片
img = Image.open('image.jpg')
# 对图片进行缩小
img.thumbnail((500, 500))
# 显示缩小后的图片
img.show()
添加水印
如下代码演示了如何使用PIL为图片添加水印:
from PIL import Image, ImageDraw
# 打开原始图片
im = Image.open('image.jpg')
# 创建一个ImageDraw对象
draw = ImageDraw.Draw(im)
# 添加文本水印
draw.text((10, 10), 'This is a watermark', fill=(255, 255, 255), font=None)
# 打开水印图片
mark_img = Image.open('mark.png')
# 调整水印图片大小
mark_img.thumbnail((150, 150))
# 将水印图片加到主图片上
im.paste(mark_img, (10, 10), mask=mark_img)
# 显示加了水印的图片
im.show()
以上就是使用Python PIL的完整攻略了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python pil - Python技术站