0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python证件照制作小程序源代码

汽车电子技术 来源:Python代码大全 作者: Python代码狂人 2023-02-24 10:23 次阅读

Python证件照制作小程序源代码,可一键修改证件照背景及大小,采用removebg在线抠图工具进行自动抠图,程序中已提供默认apiKey(g79GjuedecMLVVwkfXWSLv26)。直接运行程序即可一键制作证件照。

poYBAGP4H3aAVYyRAALnlUOXWaQ543.png

poYBAGP4H4WANRcuAATOec18iMA094.png

核心程序代码

from PIL import Image
from removebg import RemoveBg
from pathlib import Path
from tkinter import ttk
from ttkthemes import ThemedTk
import tkinter as tk
from tkinter import filedialog, colorchooser
'''
removebg 的APIKEY:g79GjuedecMLVVwkfXWSLv26
'''

img_path = ''
dir_path = ''
bg_color = 'blue'

def change_bg_size():
    try:
        global img_path
        img_path = replace_bg()
        change_size()
        # 在输出框显示提示信息
        tree.heading("#0", text="成功修改背景与大小!")
    except Exception as e:
        # 显示错误信息
        tree.heading("#0", text=e)

# 修改照片背景色
def replace_bg():
    api_key = entry5.get()

    # 在程序当前目录创建一个error.log文件来保存错误信息(必要参数)
    Path('error.log').touch()
    rmbg = RemoveBg(api_key, 'error.log')
    # 执行后会在 read_path 同级文件夹内生成一张 xxx_no_bg.png 的图片
    rmbg.remove_background_from_img_file(img_path)
    img_no_bg = Image.open(Path(str(img_path) + '_no_bg.png'))
    # 创建一个新的图像,RGB代表真色彩,3通道,
    # color可以为颜色英文名 red 或是 十六进制颜色代码 #00FF00
    new_img = Image.new('RGB', img_no_bg.size, color=bg_color)
    # 将没有背景的图像粘贴到含背景色的图像上
    new_img.paste(img_no_bg, (0, 0, *img_no_bg.size), img_no_bg)
    save_path = Path(dir_path, str(img_path.name).split('.')[0] + 'replace_bg.png')
    new_img.save(save_path)
    return save_path
    tree.heading("#0", text="图片已生成!")

# 修改照片尺寸
def change_size():
    width, height = entry4.get().split('x')
    image = Image.open(img_path)
    resized_image = image.resize((int(width), int(height)), Image.ANTIALIAS)
    resized_image.save(Path(dir_path, str(img_path.name).split('.')[0] + '_change_size.png'))
    tree.heading("#0", text="尺寸修改成功!")

# change_bgcolor('证件.png', 'p1_bg.png', 'oRdiK39HgoxdFE1A8QbL7wpF', 'red')

def selectFilePath():
    global img_path
    # 选择文件path接收文件地址
    img_path = Path(filedialog.askopenfilename(title='选择原图片'))
    x, y = Image.open(img_path).size
    entry4.insert(0, str(x) + 'x' + str(y))
    path1.set(img_path)

def selectDirPath():
    global dir_path
    # 选择文件path接收文件地址
    dir_path = Path(filedialog.askdirectory(title='选择图片保存路径'))
    path2.set(dir_path)

def ChooseColor():
    global bg_color
    # 返回两种格式的颜色代码,这里只保存十六进制的
    _, bg_color = colorchooser.askcolor(title='颜色选择器')
    path3.set(bg_color)

window = ThemedTk(theme="adapta", fonts=True, themebg=True)
window.title('证件照生成器——Python代码大全')
label_style = ttk.Style()
label_style.configure("one.TLabel", font=("微软雅黑", 16, 'bold'), foreground="red", background="yellow")

label_style1 = ttk.Style()
label_style1.configure("two.TLabel", font=("微软雅黑", 9), foreground="blue", background="yellow")    

label_style2 = ttk.Style()
label_style2.configure("three.TLabel", font=("微软雅黑", 10), foreground="blue", background="yellow")



# 设置选择图片路径组件
path1 = tk.StringVar()
entry1 = ttk.Entry(window, textvariable=path1, width=30)
entry1.insert(0, '格式要求png')
button1 = ttk.Button(window,width=10, text = "图片路径", command = selectFilePath)

# 设置选择文件保存路径组件
path2 = tk.StringVar()
entry2 = ttk.Entry(window, textvariable=path2, width=30)
button2 = ttk.Button(window,width=10, text = "保存路径", command = selectDirPath)

# 设置选择背景颜色组件
path3 = tk.StringVar()
entry3 = ttk.Entry(window, textvariable=path3, width=30)
button3 = ttk.Button(window, text='背景颜色', command=ChooseColor)

# 设置图片大小,默认原图大小,格式如295x413(标准一寸)
label = ttk.Label(window, text='默认原图大小,若要修改请按[]内
                    格式,如 [295x413] (标准一寸照)', wraplength=200, style='two.TLabel')
entry4 = ttk.Entry(window, width=30)
label1 = ttk.Label(window, text='图片尺寸', style='three.TLabel')

# 填写api-key
moren = tk.StringVar(value='g79GjuedecMLVVwkfXWSLv26')   #默认apiKey
entry5 = ttk.Entry(window, width=30, textvariable=moren,show="*")
label2 = ttk.Label(window, text='api-key', style='three.TLabel')

# 添加“同时修改”按钮
button4 = ttk.Button(window, text = "同时修改", command=change_bg_size)
# 添加“修改背景”按钮
button5 = ttk.Button(window, text = "修改背景", command=replace_bg)
# 添加“修改尺寸”按钮
button6 = ttk.Button(window, text = "修改尺寸", command=change_size)

# 添加输出框显示
tree = ttk.Treeview(height=1, show=("tree", "headings"))

#main_label.grid(row = 0, column = 0, pady=5)
entry1.grid(row = 1, column = 0, pady=5)
button1.grid(row = 1, column = 1, padx=20)
entry2.grid(row = 2, column = 0, pady=5)
button2.grid(row = 2, column = 1, padx=20)
entry3.grid(row = 3, column = 0, pady=5)
button3.grid(row = 3, column = 1, padx=20)
label.grid(row = 4, column = 0, pady=5)
entry4.grid(row = 5, column = 0, pady=5)
label1.grid(row = 5, column = 1, pady=5)
entry5.grid(row = 6, column = 0, pady=5)
label2.grid(row = 6, column = 1, pady=5)
button4.grid(row = 7, column = 1, padx=5)
button5.grid(row = 7, column = 0, padx=5)
button6.grid(row = 8, column = 0, padx=5)
tree.grid(row=9, column=0, pady=5)
window.mainloop()

完整代码下载地址:


https://download.csdn.net/download/weixin_42756970/85474989

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序
    +关注

    关注

    117

    文章

    3782

    浏览量

    80990
  • 源代码
    +关注

    关注

    96

    文章

    2945

    浏览量

    66725
  • python
    +关注

    关注

    56

    文章

    4792

    浏览量

    84613
收藏 人收藏

    评论

    相关推荐

    VBA程序源代码

    VBA程序源代码
    发表于 02-09 15:16 12次下载

    波形显示电路的设计及制作(论文+源代码

    波形显示电路的设计及制作(论文+源代码
    发表于 12-11 22:52 2次下载

    荣耀9什么时候上市最新消息:华为荣耀9发布时间确定6月12日,配置、外观设计、证件照、价格大曝光

    今天,华为放出一张图,说下月12日有神秘新品发布,应该就是荣耀9了。今日荣耀9的证件照也在工信部正式露脸,大致的装备信息也浮出水面,汇集了曲面玻璃、双摄、麒麟960等特性。下面就来各种信息大汇总!
    发表于 05-26 17:39 4212次阅读

    ATtiny单片机电子蜡烛的制作源代码程序资料免费下载

    本文档的主要内容详细介绍的是ATtiny电子蜡烛的制作源代码程序资料免费下载。
    发表于 02-14 08:00 18次下载
    ATtiny单片机电子蜡烛的<b class='flag-5'>制作</b><b class='flag-5'>源代码</b><b class='flag-5'>程序</b>资料免费下载

    OPPO Reno证件照曝光,“铡刀式”前置摄像头抢眼

    随着发布时间的临近,关于该机的消息越来越多,继上周该机的标准版入网工信部后,现在有最新消息,该机的证件照首次得到确认。
    的头像 发表于 04-11 17:38 3440次阅读

    华为Mate20X5G证件照公布 业界首款SA/NSA5G双模手机

    7月4日消息,工信部公布了华为Mate 20 X 5G证件照(型号为EVR-AN00),这是国行首款获得5G终端电信进网许可证的智能手机。
    的头像 发表于 07-05 09:22 2232次阅读

    Python微服务开发的源代码合集免费下载

    本文档的主要内容详细介绍的是Python微服务开发的源代码合集免费下载。
    发表于 09-20 08:00 3次下载

    python实现目标检测的源代码免费下载

    本文档的主要内容详细介绍的是python实现目标检测的源代码免费下载
    发表于 04-09 08:00 6次下载
    <b class='flag-5'>python</b>实现目标检测的<b class='flag-5'>源代码</b>免费下载

    python文件读取的源代码免费下载

    本文档的主要内容详细介绍的是python文件读取的源代码免费下载。
    发表于 08-07 17:14 20次下载
    <b class='flag-5'>python</b>文件读取的<b class='flag-5'>源代码</b>免费下载

    使用Python按行读文件的源代码免费下载

    本文档的主要内容详细介绍的是使用Python按行读文件的源代码免费下载。
    发表于 10-22 17:57 12次下载
    使用<b class='flag-5'>Python</b>按行读文件的<b class='flag-5'>源代码</b>免费下载

    Python版警察抓小偷游戏源代码

    Python版警察抓小偷游戏源代码,有多个难度级别,直接运行game.py,输入难度级别(1-13)。不同的难度等级对应不同的图形。
    的头像 发表于 02-24 09:56 1692次阅读
    <b class='flag-5'>Python</b>版警察抓小偷游戏<b class='flag-5'>源代码</b>

    Python版超市管理系统源代码

    Python版超市管理系统源代码,基于django+mysql安装步骤
    的头像 发表于 02-24 09:59 1684次阅读
    <b class='flag-5'>Python</b>版超市管理系统<b class='flag-5'>源代码</b>

    Python编程实战(源代码)

    [源代码]Python编程实战 妙趣横生的项目之旅
    发表于 06-06 17:49 3次下载

    [源代码]Python算法详解

    [源代码]Python算法详解[源代码]Python算法详解
    发表于 06-06 17:50 0次下载

    努比亚Flip 5G折叠屏手机证件照首曝,即将国内发售

    近日,匿名科技公司于MWC2024上发布的努比亚Flip 5G折叠屏手机已在工业和信息化部网站上展示出其证件照片,预示着此款新品将在国内市场即将推出。
    的头像 发表于 02-29 14:22 819次阅读