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

yizhihongxing

生成方形或圆形的缩略图是我们在图片处理过程中常常需要处理的问题。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技术站

(0)
上一篇 2023年3月25日
下一篇 2023年3月25日

相关文章

  • Python import自己的模块报错问题及解决

    下面是详细的“Python import自己的模块报错问题及解决”教程: 问题描述 在Python开发过程中,我们经常会写一些模块或者包,而在模块和包的导入过程中,有可能会遇到自己模块导入报错的问题,这是很常见的一种错误。这种错误通常表现为: ImportError: cannot import name ‘xxx’ from ‘yyy’ 其中,“xxx”代…

    python 2023年5月13日
    00
  • Python 中字符串拼接的多种方法

    当你需要将字符串连接在一起时,Python 提供了多种方法来执行此操作。下面就来介绍 Python 中字符串拼接的多种方法。 使用“+”符号连接字符串 你可以使用“+”符号将两个字符串连接在一起。下面是示例代码: string1 = "Hello" string2 = "World" string3 = string1…

    python 2023年6月5日
    00
  • Python操作Excel工作簿的示例代码(\*.xlsx)

    下面是Python操作Excel工作簿的示例代码的完整实例教程。 1. 准备工作 在开始操作之前,我们需要安装Python的excel处理库——openpyxl,可以通过以下命令进行安装: pip install openpyxl 2. 创建Excel文件 我们首先需要创建一个Excel文件,可以使用openpyxl库提供的Workbook类来创建一个新的E…

    python 2023年5月13日
    00
  • 为什么归一化直方图给出了错误的 y 值(都应该加起来为 1)? Python matplotlib [重复]

    【问题标题】:Why does the normalized histogram give wrong y values (all should add up to 1)? Python matplotlib [duplicate]为什么归一化直方图给出了错误的 y 值(都应该加起来为 1)? Python matplotlib [重复] 【发布时间】:20…

    Python开发 2023年4月8日
    00
  • Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头

    完整攻略 本攻略介绍了如何使用Python和OpenCV实现图像处理,包括打印图片属性、设置存储路径、调用摄像头等操作。 打印图片属性 我们可以使用OpenCV中的cv2.imread函数加载图片,并使用cv2.imshow函数在窗口中显示图片。图片属性包含了图片的高度、宽度、通道等信息,可以通过img.shape获得。示例代码如下: # 导入相关库 imp…

    python 2023年5月18日
    00
  • pip升级pip3的快速方法指南

    下面我将详细讲解“pip升级pip3的快速方法指南”的完整攻略,包含以下几个步骤: 1. 确认当前pip版本 在升级pip前,我们需要确认当前的pip版本。打开终端/命令行窗口,输入以下命令: pip –version 命令会返回当前pip的版本号,例如: pip 21.3.1 from /usr/local/lib/python3.8/site-pack…

    python 2023年5月14日
    00
  • 在Python中处理字符串之ljust()方法的使用简介

    在Python中处理字符串之ljust()方法的使用简介 简介 在Python中处理字符串时,经常需要对字符串进行对齐操作。在这种情况下,ljust()方法是一个很有用的工具。ljust()方法可以让字符串左对齐,并在其右侧填充指定字符(默认为空格)以达到指定长度。 语法 ljust()方法的语法如下: str.ljust(width[, fillchar]…

    python 2023年6月5日
    00
  • Python处理PDF与CDF实例

    Python处理PDF与CDF实例 在统计学和数据分析中,概率密度函数(Probability Density Function,PDF)与累积分布函数(Cumulative Distribution Function,CDF)是两个非常常用的函数。Python中有许多库可以帮助我们处理PDF和CDF。本文将会为大家讲解如何使用Python处理PDF与CDF…

    python 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部