1. 从Removebg获得API
登录Removebg网站,注册,然后获得API。免费用户可以免费获得50张预览图的使用,对于证件照这种100kb级别的图片来说,预览图已经足够了。
2. python实现自动化
首先安装模块:
抠图只需要三行代码:
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,搞定。以后有需要再把它写好一点。目前够用!