携手创作,共同成长!这是我参与「掘金日新计划 · 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;