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

  • Post category:Python

生成方形或圆形的缩略图是针对图片进行处理的一种常见需求。Python的Pillow库提供了丰富的图片处理工具,可以通过它轻松实现缩略图的生成。

下面是使用Python Pillow生成方形或圆形缩略图的完整攻略:

1. 安装Pillow

在使用Pillow之前,需要先进行安装。可以在命令行中使用pip进行安装:

pip install pillow

2. 生成方形缩略图

使用Pillow生成方形缩略图很简单,只需要以下几步:

2.1 打开图片

使用Image.open()方法打开图片文件:

from PIL import Image

with Image.open('image.jpg') as im:
    # 处理图片

2.2 生成缩略图

使用Image.thumbnail()方法生成缩略图,通过指定缩略图的大小来控制缩略图的尺寸:

with Image.open('image.jpg') as im:
    size = (256, 256)
    im.thumbnail(size)
    im.save('thumbnail.jpg')

上面的代码会生成一个256×256像素的方形缩略图,并保存到thumbnail.jpg文件中。

3. 生成圆形缩略图

使用Pillow生成圆形缩略图需要经过以下几个步骤:

3.1 打开图片

同样使用Image.open()方法打开图片文件。

from PIL import Image, ImageDraw

with Image.open('image.jpg') as im:
    # 处理图片

3.2 生成缩略图

生成缩略图的过程同生成方形缩略图的过程类似。

with Image.open('image.jpg') as im:
    size = (256, 256)
    im.thumbnail(size)

3.3 生成圆形图片

使用ImageDraw模块的ellipse()方法生成圆形图片:

mask = Image.new('L', size, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0) + size, fill=255)

上述代码会生成一个大小为size的空白图片(黑色),在其中画一个大小为size的圆形(白色)。

3.4 合并图片

将缩略图和圆形图片合并即可生成圆形缩略图:

output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
output.putalpha(mask)
output.save('circle_thumbnail.png')

上述代码会将缩略图调整到圆形图片的大小和位置,并在圆形图片上加上透明通道,使得多余的部分透明化,最终生成一个圆形缩略图。

以上是用Python Pillow生成方形或圆形的缩略图的实现流程,可以根据需要进行相关代码的修改和拓展。