详解用Python Pillow生成方形或圆形的缩略图

  • Post category:Python

为您详细讲解用Python Pillow生成方形或圆形的缩略图的完整攻略。

简介

Pillow是Python图像库之一,可以用于处理各种格式的图像。生成缩略图是图像处理中经常用到的功能之一,Pillow库提供了生成方形或圆形缩略图的方法。

安装

您需要先安装Pillow库。可以使用pip进行安装。

pip install pillow

生成方形缩略图

使用Pillow库生成方形缩略图有两种方法,一种是保持图像比例缩小,另一种是将图像裁剪成方形。

保持比例缩小

此方法将图像按照指定的大小进行缩小,保持原有比例。如果指定大小的长宽比例与原有图像比例不一致,则以原图比例作为参考进行缩小。示例代码如下:

from PIL import Image

# 打开原图
im = Image.open("test.jpg")

# 生成缩略图
size = (300, 300)
im.thumbnail(size)

# 显示缩略图
im.show()

以上代码中,thumbnail方法用于生成缩略图,大小为(300, 300)

裁剪成方形

此方法将图像裁剪成正方形。如果原图比例不是1:1,则会按照中心位置进行裁剪。示例代码如下:

from PIL import Image

# 打开原图
im = Image.open("test.jpg")

# 获取图像长宽
width, height = im.size

# 计算裁剪位置
if width > height:
    delta = (width - height) // 2
    box = (delta, 0, width - delta, height)
else:
    delta = (height - width) // 2
    box = (0, delta, width, height - delta)

# 裁剪成正方形
im = im.crop(box)

# 生成缩略图
size = (300, 300)
im.thumbnail(size)

# 显示缩略图
im.show()

以上代码中,首先获取原图的长宽,然后根据长宽计算裁剪位置。最后使用crop方法进行裁剪,再使用thumbnail方法生成缩略图。

生成圆形缩略图

生成圆形缩略图需要使用PIL库的ImageDraw模块进行绘制。首先要先生成一个方形缩略图,然后在其基础上进行绘制。示例代码如下:

from PIL import Image, ImageDraw

# 打开原图
im = Image.open("test.jpg")

# 生成方形缩略图
size = (300, 300)
im.thumbnail(size)

# 绘制圆形缩略图
mask = Image.new("L", size, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0) + size, fill=255)
im.putalpha(mask)

# 显示圆形缩略图
im.show()

以上代码中,首先生成一个300×300的方形缩略图,然后使用ImageDraw模块绘制一个圆形掩模。最后使用putalpha方法将掩模设置为缩略图的alpha通道,从而生成一个圆形缩略图。

总结

使用Pillow库可以很方便地生成方形或圆形缩略图。有了这些结果,可以使用它们来构建图库、展示网站信息、制作头像等等。

希望本篇文章对您有所帮助。