from PIL import ImageDraw, Image, ImageQt
from PySide6.QtGui import QPixmap, QImage
def circular_avatar(image_path):
with Image.open(image_path) as img:
# 假设我们要裁剪的正方形边长为 min_size
min_size = min(img.size[0], img.size[1])
# 我是从上向下裁剪一个正方形,可以修改参数调整你要裁剪的起点;如居中裁剪等等
left = 0
right = img.width
top = 0
bottom = top + min_size
# 裁剪图片
img_cropped = img.crop((left, top, right, bottom ))
mask = Image.new('L', img_cropped.size, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0) + img_cropped.size, fill=255)
# 将裁剪后的图片与蒙版结合,得到圆形图片
img_circular = img_cropped.copy()
img_circular.putalpha(mask)
qt_image = ImageQt.ImageQt(img_circular)
qt_pixmap = QPixmap.fromImage(qt_image)
return qt_pixmap
PySide6 矩形图像转圆形图像
于 2024-12-06 10:04:49 首次发布