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

# 在程序当前目录创建一个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)


![在这里插入图片描述](https://img-blog.csdnimg.cn/68083ca3f1fb4fce90dbe2c1362748e6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARHJlYW3kuLZLaWxsZXI=,size_12,color_FFFFFF,t_70,g_se,x_16#pic_center)


#### 添加选择保存路径组件


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



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)


![在这里插入图片描述](https://img-blog.csdnimg.cn/c16c9f8a3b4d4581b2ce4e122b40025f.png#pic_center)


#### 添加选择背景颜色组件


这里使用`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)


![在这里插入图片描述](https://img-blog.csdnimg.cn/57806241a98b41169ac7cdb2e96a4979.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2006498a8bcb4207a1b99273108ee942.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARHJlYW3kuLZLaWxsZXI=,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)


#### 添加填写图片尺寸组件


如果要修改图片的话,就填写这一栏,默认为原图尺寸,这里如果想要标准尺寸的话,建议先自己百度一下,如标准一寸就是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’)


![在这里插入图片描述](https://img-blog.csdnimg.cn/240ee18c5713467888210cef0d5dbd41.png#pic_center)


#### 添加填写API-KEY组件


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



填写api-key

entry5 = ttk.Entry(window, width=30, show=“*”)
label2 = ttk.Label(window, text=‘api-key’, style=‘three.TLabel’)


![在这里插入图片描述](https://img-blog.csdnimg.cn/434f07e57b91448db03f56e5ba077931.png#pic_center)


#### 添加控制按钮


* **修改背景按钮**:只修改原图的背景图,需要指定原图路径,保存路径,背景颜色等。
* **修改尺寸按钮**:只修改原图的尺寸,需要指定原图路径,保存路径,图片尺寸等。
* **同时修改按钮**:同时修改原图的尺寸与背景,需要指定原图路径,保存路径,图片颜色(可选),图片尺寸(可选),如果未选择颜色,尺寸则默认蓝底,图片尺寸为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)


![在这里插入图片描述](https://img-blog.csdnimg.cn/d9bfb8ff5d0c4b65a7b24a2fde56b214.png#pic_center)


#### 添加输出框显示


显示运行结果信息。



添加输出框显示

tree = ttk.Treeview(height=1, show=(“tree”, “headings”))


![在这里插入图片描述](https://img-blog.csdnimg.cn/3bc62ccac8464b279ff69c4df8596e93.png#pic_center)


#### 设置组件位置


这里使用 `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”)


![在这里插入图片描述](https://img-blog.csdnimg.cn/fdd10b59ddf74977a1d2e5ad2bae79b9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARHJlYW3kuLZLaWxsZXI=,size_12,color_FFFFFF,t_70,g_se,x_16#pic_center)




---


  

### 源码打包


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



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


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



> 
> **-F**:打包单个文件,产生一个文件用于部署(默认),如果代码都写在一个 `.py` 文件时使用,项目有多个文件时不要使用
> 
> 
> 
> ```
> pyinstaller -F xxx.py
> 
> ```
> 
> **-D**:打包多个文件,产生一个目录用于部署(默认),用于框架编写的代码打包
> 
> 
> 
> ```
> 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 进入该文件夹下**(重点),执行下面语句  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5b4e4c2288c64c7b8a99ed1d7304616e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARHJlYW3kuLZLaWxsZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)


生成的文件结构如下  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0dfc1067c49b4bcf8834a6a62395873a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARHJlYW3kuLZLaWxsZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)


`exe` 可执行文件在 `dist` 目录下  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/77db1a5ebad548e4b324bbeaba2108aa.png)



> 
> **这就是本文所有的内容了,如果感觉还不错的话。**❤ 点个赞再走吧!!!❤  
>    
> ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210525193952705.png#pic_center)  
>  **后续会继续分享各种干货,如果感兴趣的话可以点个关注不迷路哦~。**
> 


### 如何自学黑客&网络安全


#### 黑客零基础入门学习路线&规划


**初级黑客**  
 **1、网络安全理论知识(2天)**  
 ①了解行业相关背景,前景,确定发展方向。  
 ②学习网络安全相关法律法规。  
 ③网络安全运营的概念。  
 ④等保简介、等保规定、流程和规范。(非常重要)


**2、渗透测试基础(一周)**  
 ①渗透测试的流程、分类、标准  
 ②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking  
 ③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察  
 ④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等


**3、操作系统基础(一周)**  
 ①Windows系统常见功能和命令  
 ②Kali Linux系统常见功能和命令  
 ③操作系统安全(系统入侵排查/系统加固基础)


**4、计算机网络基础(一周)**  
 ①计算机网络基础、协议和架构  
 ②网络通信原理、OSI模型、数据转发流程  
 ③常见协议解析(HTTP、TCP/IP、ARP等)  
 ④网络攻击技术与网络安全防御技术  
 ⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现


**5、数据库基础操作(2天)**  
 ①数据库基础  
 ②SQL语言基础  
 ③数据库安全加固


**6、Web渗透(1周)**  
 ①HTML、CSS和JavaScript简介  
 ②OWASP Top10  
 ③Web漏洞扫描工具  
 ④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)  
 恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k


到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?


如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!


**7、脚本编程(初级/中级/高级)**  
 在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.


如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。

**8、超级黑客**  
 这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。  
 ![img](https://img-blog.csdnimg.cn/img_convert/3fd39c2ba8ec22649979f245f4221608.webp?x-oss-process=image/format,png)


#### 网络安全工程师企业级学习路线


![img](https://img-blog.csdnimg.cn/img_convert/931ac5ac21a22d230645ccf767358997.webp?x-oss-process=image/format,png)  
 如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的


视频配套资料&国内外网安书籍、文档&工具


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

![img](https://img-blog.csdnimg.cn/img_convert/153b2778a3fe5198265bed9635d63469.webp?x-oss-process=image/format,png)  
 一些笔者自己买的、其他平台白嫖不到的视频教程。  
 ![img](https://img-blog.csdnimg.cn/img_convert/32eb4b22aa740233c5198d3c161b37e8.webp?x-oss-process=image/format,png)



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值