用 Python 制作可视化 GUI 界面,一键实现证件照背景颜色的替换

百家 作者:AI100 2022-07-26 19:36:12

作者 | 欣一
来源 |?Python爱好者集中营
今天,我们来分享一下如何通过Python的十来行代码来替换证件照的背景颜色,那么在最后,小编也会将上述的流程制作成一个GUI界面来方便大家使用。关于界面的大致模样其实和先前的相差不大,大家应该都看过上一篇的内容

界面大体的样子

整体GUI的界面如下图所示
用户在使用的时候可以选择将证件照片替换成是“白底背景”或者是“红底背景”,那么在前端的界面上传完成照片之后,后端的程序便会开始执行该有的操作。

去除掉背景颜色

首先我们需要将照片的背景颜色给去除掉,这里用到的是第三方的接口removebg,官方链接是:
我们在完成账号的注册之后,访问下面的链接获取api_key:https://www.remove.bg/api#remove-background
下面便是相对应的程序代码了,如下
def?remove_bg(self):
????api_keys?=?"自己注册的api_key"
????rmbg?=?RemoveBg(api_keys,?"error.log")
????rmbg.remove_background_from_img_file(imgNamepath)

添加上我们想要的颜色

在完成去除掉证件照片的背景颜色之后,我们再添加上我们想要的背景颜色即可,例如我们想要添加上“红色”的背景颜色,代码如下
no_bg_image?=?Image.open(in_path)
x,?y?=?no_bg_image.size
new_image?=?Image.new('RGBA',?no_bg_image.size,?color="red")
new_image.paste(no_bg_image,?(0,?0,?x,?y),?no_bg_image)
new_image.save(output_path)
这次我们在GUI界面中用到的显示图片的控件是graphicsView组件,我们在点击“选择图片”的按钮之后,在上传图片之后,需要在graphicsView窗口当中将图片显示出来,代码如下
def?openImage(self):
????global?imgNamepath??#?这里为了方便别的地方引用图片路径,将其设置为全局变量
????imgNamepath,?imgType?=?QFileDialog.getOpenFileName(self.ui,?"选择图片",?"D:\\",?"*.png;;*.jpg;;All?Files(*)")
????#?通过文件路径获取图片文件,并设置图片长宽为label控件的长、宽
????img?=?QtGui.QPixmap(imgNamepath).scaled(self.ui.graphicsView.size(),?aspectMode=Qt.KeepAspectRatioByExpanding)
????print("img:?",?img.width(),?img.height())
????self.ui.graphicsView.setFixedSize(img.width(),?img.height())
????#?在label控件上显示选择的图片
????item?=?QGraphicsPixmapItem(img)
????scene?=?QGraphicsScene()
????scene.addItem(item)
????self.ui.graphicsView.setScene(scene)
????self.ui.graphicsView.repaint()
????#?显示所选图片的路径
????self.ui.lineEdit.setText(imgNamepath)
最后我们来看一下整体的效果


往期回顾

“如今,99%以上的代码都是垃圾!”


马斯克称已将大脑上传云端,网友热议!


撒贝宁搭档数字人主持,还是头一回!


7岁男童因下棋太快,被机器人夹断手指?


分享

点收藏

点点赞

点在看


关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接