生成方形或圆形的缩略图是我们在图片处理过程中常常需要处理的问题。Python Pillow是一个功能强大的图片处理库,它提供了生成方形或圆形的缩略图功能,下面详细讲解如何使用Python Pillow生成方形或圆形的缩略图。
准备工作
首先,需要在Python中安装Pillow库。可以通过下面的命令进行安装:
pip install Pillow
安装完成后,我们就可以使用Pillow库来生成方形或圆形的缩略图。
生成方形缩略图
下面是生成方形缩略图的示例代码:
from PIL import Image
# 打开原图
im = Image.open('example.jpg')
# 获取原图的宽高
width, height = im.size
# 计算缩略图的宽高
size = min(width, height)
left = (width - size) // 2
top = (height - size) // 2
right = (width + size) // 2
bottom = (height + size) // 2
# 生成缩略图
im_square = im.crop((left, top, right, bottom)).resize((256, 256))
# 保存缩略图
im_square.save('example_square.jpg')
以上代码中,我们首先打开了图片,然后计算出生成缩略图的宽高。由于我们要生成方形缩略图,所以我们选择较大的宽高来生成缩略图。然后,我们通过crop()
方法截取中心部分的图像,再通过resize()
方法将其缩放到指定大小。最后,我们通过save()
方法将缩略图保存到文件。
生成圆形缩略图
下面是生成圆形缩略图的示例代码:
from PIL import Image, ImageDraw, ImageOps
# 打开原图
im = Image.open('example.jpg')
# 获取原图的宽高
width, height = im.size
# 计算缩略图的宽高
size = min(width, height)
left = (width - size) // 2
top = (height - size) // 2
right = (width + size) // 2
bottom = (height + size) // 2
# 生成缩略图
im_square = im.crop((left, top, right, bottom)).resize((256, 256))
# 生成圆形缩略图
mask = Image.new('L', (256, 256), 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0, 256, 256), fill=255)
im_circle = ImageOps.fit(im_square, mask.size, centering=(0.5, 0.5))
im_circle.putalpha(mask)
# 保存缩略图
im_circle.save('example_circle.png')
以上代码中,我们首先打开了图片,然后计算出生成缩略图的宽高。由于我们要生成圆形缩略图,所以我们选择较小的宽高来生成缩略图。然后,我们通过crop()
方法截取中心部分的图像,再通过resize()
方法将其缩放到指定大小。接下来,我们使用Image.new()
方法生成一个黑色的遮罩层,然后使用ImageDraw.Draw()
方法在遮罩层上绘制了一个白色的圆形,接着利用ImageOps.fit()
方法把缩略图居中放在遮罩层上,最后用putalpha()
方法把遮罩层应用到缩略图上,生成圆形缩略图。最后,我们通过save()
方法将缩略图保存到文件。
通过以上示例代码,我们可以清楚地了解到生成方形或圆形的缩略图的具体过程和实现方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解用Python Pillow生成方形或圆形的缩略图 - Python技术站