效果图

一点想说的

想当年我不会 Python 的时候,做个证件照还要下 证件照 软件,每次5元,感觉血亏,现在长本事了,自己做证件照

必要配置

确保下面的库都已安装。

主要涉及到的库:
tkinter:实现 GUI 编程(文本框、按钮、标签等组件实现 GUI 开发)。
PIL:第三方图像处理库,十分强大,由于使用人数庞大再加上确实牛,几乎已经被认为是 Python 官方图像处理库。
pathlib:面向对象的编程方式来表示文件系统路径。
ttkthemes:tkinter 主题包,让你的组件外观更加骚。
Pyinstaller:是一个非常简单的打包  .py  文件的库。
removebg:看名字就知道,专门抠图的库。

removebg配置

安装对应的 Python 库

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

获取API Key

进入 Removebg 官网,完成账号注册。

填写完注册信息后,会发送验证邮件到你的邮箱,点击进入后会进入如下界面。

点击 Remove image background

再点击红圈中的 Tool & API

点击 Get API Key

点击 Show 即可查看 API Key 了,最好记下来哦,之后代码中会用到。

无界面版

修改图片背景色

使用 RemoveBg 时必须指定 api-key 与 error.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 或是 十六进制颜色代码 #00FF00new_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).sizeentry4.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)

添加选择背景颜色组件

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

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 文件时使用,项目有多个文件时不要使用

pyinstaller -F xxx.py

打包多个文件,产生一个目录用于部署(默认),用于框架编写的代码打包

pyinstaller -D xxx.py(项目入口文件)

--key=keys:使用 keys 进行加密打包

pyinstaller --key=123456 -F xxx.py

-d:产生 debug 版本的可执行文件

-p:用来添加程序所用到的包的所在位置,设置导入路径,可以用 ; ( Linux 使用 :)分割来指定多个目录。

-w:表示不用控制台窗口,使用 Windows 子系统执行,当程序启动的时候不会打开命令行(只对 Windows 有效)

-c:表示打开控制台窗口,使用控制台子系统执行,当程序启动的时候会打开命令行(默认)(只对 Windows 有效)

-i:将 file.ico 添加为可执行文件的资源,改变程序的图标(只对 Windows 系统有效)

安装完成后,新建一个文件夹,将源文件放到该文件夹下面,打开cmd, cd 进入该文件夹下(重点),执行下面语句

生成的文件结构如下

exe 可执行文件在 dist 目录下

❤️end❤️

这期就分享到这里结束了~学会的铁汁记得动手试试噢!

❤ 喜欢记得给小编三连!!!❤

想领取完整源码跟python学习资料可私信我或点击这行字体即可

教你用python制作证件照片啦学会再也不用跑去照相馆拍照了~相关推荐

  1. 此 sqltransaction 已完成;它再也无法使用_手把手教你如何修眉毛,学会再也不用花钱去美容院了...

    最近看到有网友在评论中询问怎么修眉毛,刚好小编我对修眉有一点研究,可能比不上专业修眉的,但是最少能看不是,今天拿出来献给大家,希望各位自己学会如何修眉毛,那样的话以后就再也不用花钱去美容院了.在此先谢 ...

  2. 七十行代码教你使用 python ffmpeg 压缩视频,再也不用担心视频过大了

    前期准备 最近要压缩视频,然后发现一些压缩视频的工具要是收费,要么有水印,完全不符合要求啊.正当我发愁的时候突然想到,去年的时候接触过 ffmpeg ,可以用python ffmpeg 来压缩视频啊, ...

  3. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  4. 教你用python制作人脸卡通画(附源码)

    教你用python制作人脸卡通画(附源码) 效果展示: 让我们开始学习之路: 原理:利用第三方人脸接口将图像人脸化 第三方接口注册地址:https://ai.minivision.cn/#/login ...

  5. python开发rpa_几步教你用 Python 制作一个 RPA 机器人!

    原标题:几步教你用 Python 制作一个 RPA 机器人! 作者 | 阿文 出品 | CSDN(ID:CSDNnews) 头图 | CSDN下载自东方IC 繁琐且重复的工作 在我们日常的工作中,有很 ...

  6. 5 分钟,教你用 Python 制作一个生日提醒!

    大家好,我是安果! 在国内,大部分人都是过农历生日,然后借助日历工具获取农历日期对应的阳历日期,以这一天来过生! 这里还有一个痛点,即:每一年的农历生日对应的阳历日期都不一样 本篇文章将教你利用 Py ...

  7. python词云代码如何增加字数_3分钟教你用python制作一个简单词云

    原标题:3分钟教你用python制作一个简单词云 首先需要安装三个包: 1.制作英文字母的词云 效果图: 代码实现: 其中,test.txt文件内容如下 2.制作中文的词云 效果图: 代码实现: 其中 ...

  8. python图形设计编程_少儿编程分享:手把手教你用Python制作艺术图片

    原标题:少儿编程分享:手把手教你用Python制作艺术图片 在前面的几篇文章中,我们分享了一些用PyGame制作小游戏的教程.我们今天的分享使用的仍然是PyGame,只不过这次不是写游戏啦-我们要用P ...

  9. python软件设计背景_教你用Python制作微信好友背景墙

    目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...

最新文章

  1. 系统芯片(SOC)架构- Aviral Mittal
  2. 集群概述及原理笔记(1)
  3. JavaScript 变量克隆和判断变量类型
  4. 山寨SaaS--管理软件夜未眠(五)
  5. 企业级服务器固态硬盘,用户如何选择企业级SSD?_Intel服务器CPU_企业存储技术与评测-中关村在线...
  6. mui实现分享功能_继MIUI之后,华为EMUI更新,深度实现万物互联
  7. 手动配置gradle
  8. 基于自动图像分割算法和扩展数据集深度学习的经济作物病害识别
  9. Windows 8 Directx 开发学习笔记(十四)使用几何着色器实现三角形细分
  10. tp5 linux定时,TP5 用cron实现linux定时任务
  11. flask:小项目(医生与病人)
  12. 什么是scrum敏捷项目管理
  13. 前端页面闪动(vue+ele 表格分页)
  14. python实现指纹识别毕业论文_指纹识别系统设计毕业论文+开题报告+翻译及原文+设计源码...
  15. itest软件测试工具,Monkey测试工具 - iTest99的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  16. Unity中自制Animation+播放完毕相应事件
  17. MSI驱动指南HOWTO
  18. 能上qq但是打不开网页-详解DNS
  19. 【性能监控】TTI (Time to interactive)
  20. 游戏游客登录与账号登录

热门文章

  1. stm32 IIC ACK与NACK的理解
  2. UE_LOG打印信息
  3. cxxxxx和xxxxx.h的区别
  4. 数据分析:基于Pandas的全球自然灾害分析与可视化
  5. 1200PLC和Modbus485主站DCS系统通讯
  6. Counterfactual Zero-Shot and Open-Set Visual Recognition
  7. 图像属性——老照片特效
  8. 实战:Gateway API-2022.2.13
  9. C博客作业00--我的第一篇博客
  10. PageRank背后的数学