为您详细讲解用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库可以很方便地生成方形或圆形缩略图。有了这些结果,可以使用它们来构建图库、展示网站信息、制作头像等等。
希望本篇文章对您有所帮助。