1. 从Removebg获得API

登录Removebg网站,注册,然后获得API。免费用户可以免费获得50张预览图的使用,对于证件照这种100kb级别的图片来说,预览图已经足够了。

2. python实现自动化

首先安装模块:

1
pip install removebg

抠图只需要三行代码:

1
2
3
from removebg import RemoveBg
rmbg = RemoveBg("WZ2QKfAN9PPxxxxxx", "error.log") # 引号内是获取的API
rmbg.remove_background_from_img_file("D:/Desktop/1.jpg") #图片地址

之前我就使用这个帮整个办公室换了几十张寸照的底色。(上次去照相馆打印寸照,说换底要加10块,黑心商家!)

但是感觉还是不够方便,扣完的图是png格式,然后每次还要上Photoshop去加个背景色。总想着一键换底这种神操作。

对于python小白来说,这并不是那么简单,之前想通过openCV,太复杂,不会。今天终于让我找到一个简单的办法,通过PIL模块的paste函数。因为我是按照PS的思路,就是将png图片后面添加一个底色的图层就可以了,那paste就可以实现这个想法了。

废话少说,上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from PIL import Image
from removebg import RemoveBg
import os.path


def Change_background(imgage_file_path, bg_color):
file_name = imgage_file_path + "_no_bg.png"
if os.path.isfile(file_name):#检查一下如果之前有去背景,就不用再浪费一次了
pass
else:
rmbg=RemoveBg("cYgwXXXXXXXXXXXXXXXXXXXg","error.log")
rmbg.remove_background_from_img_file(imgage_file_path)
foreground = Image.open(file_name)
if bg_color == 1:
background = Image.new("RGB", foreground.size,(67,142,219))
bg = "blue"
elif bg_color ==2:
background = Image.new("RGB", foreground.size,(255,0,0))
bg = "red"
else:
background = Image.new("RGB", foreground.size,(255,255,255))
bg = "white"
background.paste(foreground, (0, 0), foreground)
file_name2 = imgage_file_path + "_" + bg +".jpg"
background.save(file_name2,quality=100, dpi=(96.0,96.0))


file = input("请输入文件路径:")
bg = int(input("请选择底色(输入数字):\n 1. 蓝底 \n 2. 红底 \n 3. 白底 \n"))
Change_background(file, bg)

然后保存图片的时候,quality我写了100,有的教程里面提到写100可能有问题,大部分都写着quality=95,但是我试过写成100对于本项目没有什么影响。

ok,搞定。以后有需要再把它写好一点。目前够用!