Python图像处理-把一个方形图片以圆形图的样式贴到另一张图上面的指定位置

使用 PIL 模块, 在生成个人的海报页面, 或者其他页面, 需要在这张海报上面贴上一个圆形的图片, 就好比圆形的个人头像什么的.

两张底图

  • 这个是准备转换为圆形的图片head_image.jpg

Python图像处理-把一个方形图片以圆形图的样式贴到另一张图上面的指定位置_第1张图片

  • 底图(820*512)
  • 1608690598-1238475.jpgPython图像处理-把一个方形图片以圆形图的样式贴到另一张图上面的指定位置_第2张图片

效果图(成品图)

  • head_image.jpg贴到底图的右上角, 并显示为圆形大小150*150
  • Python图像处理-把一个方形图片以圆形图的样式贴到另一张图上面的指定位置_第3张图片

实现代码

# 导入需要的包
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 模块写入东西的时候都是从左上角开始, 所以当写入一个东西的时候, 想要写入指定位置, 要先计算写入东西的尺寸, 然后再计算写入东西的左上角所在的坐标

你可能感兴趣的:(值得拥有-Python,笔记,python,计算机视觉)