1.编写去除背景函数

首先到 https://www.remove.bg/zh 这个网站取注册一个账号,然后到我的控制面板去找到API密钥,免费用户每个月可以处理50张低分辨率(625*400)的抠图。

在编写处理函数之前我们先要使用pip安装removebg模块

pip install removebg

然后开始编写处理函数

from removebg import RemoveBg  #导入removebf模块
rmbg = RemoveBg('此处填写API密钥','error.log')

def remove_bg(image_path):
    """
    去除图片背景
    """
    rmbg.remove_background_from_img_file(image_path)

2.搭建界面

接下来创建main.py文件,使用Tkinter创建界面,并调用函数

import os
from tkinter import Tk, Menu,  Button
from tkinter import filedialog
from tkinter import messagebox
from RemoveBG import remove_bg
import threading as th

ImagePath = ''


class GUI(object):

    def __init__(self, window):
        self.window = window
        self.window.title('专业去背景 v1.0')
        self.window.geometry('300x200')

        # 生成图片
        self.btn2 = Button(window, text='开始抠图', width=15, height=2, command=self.gen_img)
        self.btn2.place(relx=0.5, rely=0.5, anchor='center')

        # 菜单
        menu_bar = Menu(window)
        window.config(menu=menu_bar)
        menu_file = Menu(menu_bar, tearoff=0)
        menu_help = Menu(menu_bar, tearoff=0)
        menu_bar.add_cascade(label='文件', menu=menu_file)
        menu_bar.add_cascade(label='帮助', menu=menu_help)
        menu_file.add_command(label='打开', command=self.get_img)
        menu_file.add_separator()
        menu_file.add_command(label='退出', command=lambda: window.destroy())
        menu_help.add_command(label='关于', command=self.about)

    def about(self):
        messagebox.showinfo('关于', '请搜索并关注微信公众号「XRLoft」或访问https://www.xrloft.com')

    def get_img(self):
        """选择图片"""
        global ImagePath
        filenames = filedialog.askopenfilenames(
            filetypes=(('jpg img', '*.jpg'), ('jpeg img', '*.jpeg'), ('png img', '*.png')))
        if len(filenames) > 0:
            fn_list = [fn for fn in filenames]
            fn_str = '\n'.join(fn_list)
            print(fn_str)
            # self.label.config(text=fn_str)
            ImagePath = fn_list

    def gen_img(self):
        """保存图片"""
        global ImagePath
        res_path_list = []
        for path in ImagePath:
            file_path, temp_file_name = os.path.split(path)
            file_name, extension = os.path.split(temp_file_name)
            t = th.Thread(target=remove_bg(path), name='remove_bg')
            t.start()
            # remove_bg(path)
            res_path_list.append(path)
        res_path = ' '.join(res_path_list)
        messagebox.showinfo('提示', f'图片处理完成,路径为:{res_path}')


if __name__ == '__main__':
    # 创建窗口
    win = Tk()
    GUI(win)
    win.mainloop()

至此整个功能完成。还可以使用pyinstaller将程序打包成exe文件使用。

发表评论

电子邮件地址不会被公开。 必填项已用*标注