Python3如何使用PIL批量给图片加圆角和黑边

您所在的位置:网站首页 如何批量给图片添加文字内容和内容 Python3如何使用PIL批量给图片加圆角和黑边

Python3如何使用PIL批量给图片加圆角和黑边

2024-06-13 18:59| 来源: 网络整理| 查看: 265

一.前言

先看效果: 原图: 在这里插入图片描述 处理后的图:圆角+黑边 在这里插入图片描述

二.原理

PIL给图片添加圆角逻辑:

1.创建一个黑色透明方块,边长为圆角直径 在这里插入图片描述

2.在黑色方块内,创建一个白色不透明圆形,半径为圆角半径 在这里插入图片描述

3.创建一个穿白色不透明的过滤层,尺寸和原图尺寸一样,用来切割图片圆角 在这里插入图片描述

4.把步骤2的图片切割成四个角,分别paste到步骤3的过滤层的四个角,我们得到一张过滤层 在这里插入图片描述

5.使用Image.putalpha函数,替换原图的aplha层,这样就切割成功了。 在这里插入图片描述

6.然后我们使用ImageDraw类在原图上画一个圆角矩形即可 在这里插入图片描述

三.核心API

先附上Pillow的Image Module的官方文档: https://pillow.readthedocs.io/en/stable/reference/Image.html

img = Image.New():创建一个Image draw = ImageDraw.Draw(img):基于一个Image来进行绘制 circle.crop(box):从图像返回一个矩形区域 alpha.paste(im, box, mask):将另一个图像粘贴到该图像中 img.putalpha(alpha):添加或替换此图像中的 alpha 层

四.源码

下面直接上代码:

from PIL import Image, ImageDraw import os def circle_corner(img, radii): circle = Image.new('L', (radii * 2, radii * 2), 0) # 创建黑色方形 draw = ImageDraw.Draw(circle) draw.ellipse((0, 0, radii * 2, radii * 2), fill=255) # 黑色方形内切白色圆形 img = img.convert("RGBA") w, h = img.size #创建一个alpha层,存放四个圆角,使用透明度切除圆角外的图片 alpha = Image.new('L', img.size, 255) alpha.paste(circle.crop((0, 0, radii, radii)), (0, 0)) # 左上角 alpha.paste(circle.crop((radii, 0, radii * 2, radii)), (w - radii, 0)) # 右上角 alpha.paste(circle.crop((radii, radii, radii * 2, radii * 2)), (w - radii, h - radii)) # 右下角 alpha.paste(circle.crop((0, radii, radii, radii * 2)), (0, h - radii)) # 左下角 img.putalpha(alpha) # 白色区域透明可见,黑色区域不可见 # 添加圆角边框 draw = ImageDraw.Draw(img) draw.rounded_rectangle(img.getbbox(), outline="black", width=3, radius=radii) return img if __name__ == '__main__': radii = 20 # 圆角大小 filePath = 'C:/Users/Desktop/Src' outPath = 'C:/Users/Desktop/Des' for i, j, k in os.walk(filePath): for filename in k: src = filePath + "/" + filename des = outPath + "/" + filename print(src) img = Image.open(src) img = circle_corner(img, radii) img.save(des, 'png', quality=100) 最后

Unity技术开发干活 - 总目录

Unity精选 - 专栏目录 Unity之ASE入门到精通 - 专栏目录 UniRx入门到精通 - 专栏目录



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3