网站首页 > 技术文章 正文
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,,版权归原作者所有,如有问题请及时联系我们以作处理
原创:蓝小白1024 来源:CSDN
本文链接:https://blog.csdn.net/lxb_wyf/article/details/111593545
私信小编01即可获取大量Python学习资料
Python图像处理-把一个方形图片以圆形图的样式贴到另一张图上面的指定位置
使用 PIL 模块, 在生成个人的海报页面, 或者其他页面, 需要在这张海报上面贴上一个圆形的图片, 就好比圆形的个人头像什么的.
两张底图
- 这个是准备转换为圆形的图片head_image.jpg
- 底图(820*512)
- 1608690598-1238475.jpg
效果图(成品图)
- 吧head_image.jpg贴到底图的右上角, 并显示为圆形大小150*150
实现代码
# 导入需要的包
from PIL import Image, ImageDraw
# 底图
base_image = Image.open("./image/1608690598-1238475.jpg")
width, height = base_image.size # 底图的宽和高
# 生成一张尺寸和底图尺寸一样 背景色为白色的 "模板"
bg = Image.new('RGB', (width, height), color=(255,255,0,0))
# bg.paste(base_image, (0, 0))
# 头像尺寸
avatar_size = (150, 150)
# 加载头像文件到 avatar
avatar = Image.open("./head_image.jpg")
# 把头像的尺寸设置成我们需要的大小, 使用resize 调整图片的尺寸
avatar = avatar.resize(avatar_size)
# 新建一个蒙板图, 注意必须是 RGBA 模式
mask = Image.new('RGBA', (150, 150), color=(0,0,0,0))
# mask.paste(avatar, (0, 0))
# 画一个圆
mask_draw = ImageDraw.Draw(mask)
mask_draw.ellipse((0,0, avatar_size[0], avatar_size[1]), fill=(159,159,160))
# 这里保存可以生成一个蒙版一个正方形中间有一个圆
# mask.save("./image/hello_pil_image.png", "PNG")
# 吧背景图 1608690598-1238475.jpg 贴到生成的空白模板中
bg.paste(base_image, (0, 0))
# # 计算头像位置 (width-150, 0)就是右上角减去圆形图的宽
# 在把 转换好的尺寸的 head_image.jpg 贴到 指定位置, - PIL 模块写入东西的时候都是从左上角开始
# 第三个参数是生成好的蒙版图
bg.paste(avatar, (width-150, 0), mask)
# 保存图片
bg.save("./image/hello_pil.png", "PNG")
# GUI环境可以使用下面方式直接预览
# bg.show()
PIL 模块写入东西的时候都是从左上角开始, 所以当写入一个东西的时候, 想要写入指定位置, 要先计算写入东西的尺寸, 然后再计算写入东西的左上角所在的坐标
猜你喜欢
- 2024-10-02 这有几种,你可能还没用过的【CSS高级特效】// 精通CSS
- 2024-10-02 「正点原子FPGA连载」第十八章Linux内核移植
- 2024-10-02 CSS 12个趣味小技巧大公开 | 原力计划
- 2024-10-02 NLP和CV的双子星,注入Mask的预训练模型BERT和MAE
- 2024-10-02 -webkit-mask制作文本渐显效果 文本制作
- 2024-10-02 图像处理中常见的操作——掩膜 掩膜图层的作用
- 2024-10-02 老AI开源项目案例:去除指定位置、形态的水印
- 2024-10-02 利用jieba分词处理《春》并制作词云图
- 2024-10-02 CSS利用mask实现图片的斜线拼接 css图片倾斜代码
- 2024-10-02 css文本、图像纯css实现一个渐变的蒙版效果
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)