python替换图片背景色,适用于制作证件照

491 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情

功能需求

需要实现一个替换图片背景的功能,去制作不同颜色背景的证件照

需求分析

根据功能需求,需要实现一个去除背景的功能,然后还需要一个背景颜色的操作;

  • 去除背景,也就是PS中的抠图,可以使用一个有名的工具removebg; removebg是一个ai抠图的软件,传入一张图片,就能自动抠图;同时它还提供了api,供调用,不过,需要登录获取APIkey,且有数量大小的限制; 在这里插入图片描述
  • removebg也有替换背景图的功能,但是使用python中的PIL库也能轻松实现背景图的添加;

代码实现:

抠图调用removebg提供的api接口

首先需要注册一个账号; 登录后获取api key, 如果不想注册,可以使用我的这个; 可以参考官网提供的代码实现抠图功能

需要一个第三方库requests:

requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到,Requests是Python语言的第三方的库,专门用于发送HTTP请求

安装方法: 需求提前安装有pip根据,执行以下代码安装:

pip install requests

抠图功能实现:

import requests
#
response = requests.post(
    'https://api.remove.bg/v1.0/removebg',
    files={'image_file': open(input_path, 'rb')},
    data={'size': 'auto'},
    headers={'X-Api-Key': 'C4kFLgD3f4YTwXh3iFxwLxZz'},
)
if response.status_code == requests.codes.ok:
    with open('no-bg.png', 'wb') as out:
        out.write(response.content)
else:
    print("Error:", response.status_code, response.text)

给透明图背景颜色

需要使用另一个python第三方库PIL Pillow库是一个Python的第三方库。在Python2中,PIL(Python Imaging Library)是一个非常好用的图像处理库,但PIL不支持Python3,所以有人(Alex Clark和Contributors)提供了Pillow,可以在Python3中使用。

官方文档路径:访问文档

安装PIL: 以python3为例,安装命令如下:

pip install Pillow

安装的名称为pillow,但是导入时,需要导入PIL

from PIL import Image

给图片加背景颜色的思路:

首先创建一个指定颜色的新图片对象; 加载原有图片 将两张图片合并,已纯色背景图片为底

实现代码:

# 要替换的背景颜色
color = "red"
# 加上背景颜色
no_bg_image = Image.open('no-bg.png')
x, y = no_bg_image.size
# 创建新图片
new_image = Image.new('RGBA', no_bg_image.size, color=color)
#将无背景的图片粘贴到新图片对象上去
new_image.paste(no_bg_image, (0, 0, x, y), no_bg_image)
new_image.save(output_path)

以上就实现了一个制作证件照的功能; 其中抠图功能,还有其他方法可以实现,如使用python中的第三方库rembg;