用Python Pillow生成方形或圆形的缩略图
在 “THUMBNAIL “这个词中,THUMB的意思是短。缩略图是原始图像的压缩预览图像,或缩略图是图像的缩小版。简单地说,缩略图是代表较大/原始图像的较小图像。
通常,缩略图的形状取决于原始图像,但在这篇文章中,我们将使用Python中的Pillow库生成圆形和方形的缩略图。
安装:
对于安装pillow和NumPy库,在你的命令提示符上写下以下命令。
例子1。使用Pillow Library打开图像。
输出:
实例2:使用Pillow库生成圆形缩略图。
步骤:
- 使用NumPy库将图像转换成NumPy数组。
- 现在使用PIL.Image.new()函数通过传递模式、图像大小和颜色创建一个新的遮罩图像,然后使用PIL.Image.Draw.Draw()函数通过传递新遮罩图像的大小来绘制图像,并让其存储在名为 “draw “的变量中。
- 使用ImageDraw.Draw.peislice()函数在遮罩图像上制作圆圈,通过传递四个点来定义边界,起始角度=0,结束角度=360,这就在遮罩图像上创建了圆圈,并通过它们传递填充参数来填充图像中的颜色。
- 将遮罩图像转换为numpy数组,然后使用numpy.dstack()函数将数组按深度堆叠,并将原始图像数组和我们在上述步骤中转换的遮罩图像数组传递给我们,以获得圆形图像,并让它存储在名为 “npImage “的变量中。
- 由于 “npImage “是数组格式,我们必须将这个数组转换为图像,这是在PIL.Image.fromarray()函数的帮助下完成的,该函数将npImage作为一个参数,让它存储在名为 “final_image “的变量中。
- 由于我们已经生成了圆形图像。
以下是完整的实现方案:
输出:
实例3:使用Pillow库生成方形缩略图。
步骤:
- 检查三个条件,如果height==width或height>width或width>height,如果图像的尺寸落在后两个条件中的任何一个。
- 然后,我们必须使用new()函数创建新的遮罩图像,并使用图像的最长边/尺寸。
- 然后使用paste()函数将原始图像粘贴到新的遮罩图像上,并将计算好的原始图像传给我们,我们将在例子的解释中讨论这个尺寸。
- 现在我们将通过上述步骤得到方形图像。
- 现在我们必须生成缩略图,我们可以通过使用PIL.Image.thumbnail()方法,将大小作为一个参数传入,然后使用PIL.Image.save()方法保存,并传入标准图像格式的图像名称。
以下是完整的实现方案:
输出:
解释:我们创建了一个函数,通过传递图像、它的宽度和高度作为参数来生成一个方形图像。在该函数中,我们检查了三个条件,并在此基础上生成了方形图像。
- 在第一个条件中,我们检查了图像的高度是否等于宽度,如果是,那么我们将图像原样返回,因为当高度和宽度相等时,图像已经是方形的了。
- 在第二种情况下,如果图像的高度大于宽度,那么我们使用Image.new()函数创建新的遮罩图像,传递图像的模式和尺寸作为它的高度(即,高度,高度)。在第二种情况下,我们使用Image.new()函数创建新的遮罩图像,并通过原始图像和原始图像粘贴在遮罩图像上的尺寸,即从计算的尺寸(用原始图像的宽度减去原始图像的高度,然后除以2)粘贴原始图像到0,以便原始图像可以完美地粘贴在遮罩图像上。
- 在第三种情况下,如果图像的宽度大于高度,那么我们做了与第二种情况相同的过程,但唯一的变化是我们创建了与它的宽度一样大小的遮罩图像(即,宽度,宽度),在粘贴的情况下,我们必须传递原始图像和尺寸,即从0到计算的尺寸(用原始图像的宽度减去原始图像的高度,然后除以2),以便原始图像可以完美地粘贴到遮罩图像上。