Python实用工具之制作证件照(有界面、附源码、赞关藏)_一寸照片制作源代码

无界面版

修改图片背景色

使用 RemoveBg 时必须指定 api-keyerror.log(保存报错信息的文件),去掉背景之后会在原图片同级文件夹内生成一张 xxx_no_bg.png 的图片,再创建一个指定颜色的背景板,将抠出来的图粘贴到背景板上。

# 修改照片背景色
def replace\_bg(read_path, save_path, api_key, bg_color='blue'):
    # 在程序当前目录创建一个error.log文件来保存错误信息(必要参数)
    Path('error.log').touch()
    rmbg = RemoveBg(api_key, 'error.log')
    # 执行后会在 read\_path 同级文件夹内生成一张 xxx\_no\_bg.png 的图片
    rmbg.remove_background_from_img_file(read_path)
    img_no_bg = Image.open(read_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)
    new_img.save(save_path)

修改图片大小

读取图片,直接使用 resize 修改图片尺寸,Image.ANTIALIAS 设置为高质量。

# 修改照片尺寸295x413(标准一寸)
def change\_size(read_path, save_path, width=295, height=413):
    image = Image.open(read_path)
    resized_image = image.resize((int(width), int(height)), Image.ANTIALIAS)
    resized_image.save(save_path)


升级版

设置窗口主题与标题

这里使用的主题时 adapta,官方推荐,样式很好看。

window = ThemedTk(theme="adapta", fonts=True, themebg=True)
window.title('证件照生成器')

添加选择图片路径组件

选择待修改图片的路径。

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)
    
path1 = tk.StringVar()
entry1 = ttk.Entry(window, textvariable=path1, width=30)
entry1.insert(0, '格式要求png')
button1 = ttk.Button(window,width=10, text = "图片路径", command = selectFilePath)

在这里插入图片描述

添加选择保存路径组件

选择修改后图片的保存路径,该路径为文件夹。

def selectDirPath():
    global dir_path
    # 选择文件path接收文件地址
    dir_path = Path(filedialog.askdirectory(title='选择图片保存路径'))
    path2.set(dir_path)
    
path2 = tk.StringVar()
entry2 = ttk.Entry(window, textvariable=path2, width=30)
button2 = ttk.Button(window,width=10, text = "保存路径", command = selectDirPath)

在这里插入图片描述

添加选择背景颜色组件

这里使用tkintercolorchooser 来当作颜色板,不得不说,实在是太好用了 。

def ChooseColor():
    global bg_color
    # 返回两种格式的颜色代码,这里只保存十六进制的
    _, bg_color = colorchooser.askcolor(title='颜色选择器')
    path3.set(bg_color)
    
path3 = tk.StringVar()
entry3 = ttk.Entry(window, textvariable=path3, width=30)
button3 = ttk.Button(window, text='背景颜色', command=ChooseColor)

在这里插入图片描述
在这里插入图片描述

添加填写图片尺寸组件

如果要修改图片的话,就填写这一栏,默认为原图尺寸,这里如果想要标准尺寸的话,建议先自己百度一下,如标准一寸就是295x413(标准一寸)。

# 设置图片大小,默认原图大小,格式如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组件

将输入框设置显示值为 “*”,可以达到隐藏显示值的效果。这里就要填写上面获取的 api-key 了。

# 填写api-key
entry5 = ttk.Entry(window, width=30, show="\*")
label2 = ttk.Label(window, text='api-key', style='three.TLabel')

在这里插入图片描述

添加控制按钮
  • 修改背景按钮:只修改原图的背景图,需要指定原图路径,保存路径,背景颜色等。
  • 修改尺寸按钮:只修改原图的尺寸,需要指定原图路径,保存路径,图片尺寸等。
  • 同时修改按钮:同时修改原图的尺寸与背景,需要指定原图路径,保存路径,图片颜色(可选),图片尺寸(可选),如果未选择颜色,尺寸则默认蓝底,图片尺寸为295x413(标准一寸)。
# 添加“同时修改”按钮
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"))

在这里插入图片描述

设置组件位置

这里使用 grid() 来设置位置,也可以用 pick() ,但个人更倾向于前者。

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)

设置组件样式

再原组件的基础上修改自己喜欢的样式。

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")

在这里插入图片描述


源码打包

虽然之前的文章中已经介绍过很多次打包的方法,但为了新读者,还是再来简单讲解一下。
首先要确保已经安装 pyinstaller,没有安装的可以先安装一下。

pip install -i https://pypi.douban.com/simple pyinstaller 

pyinstaller 使用时的常用参数含义:

-F:打包单个文件,产生一个文件用于部署(默认),如果代码都写在一个 .py 文件时使用,项目有多个文件时不要使用

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值