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

news/2024/7/7 19:38:28

0ac2726f4c65a5dfbf4bd03f98687dc5.gif

作者 | 欣一

来源 | Python爱好者集中营

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

界面大体的样子

整体GUI的界面如下图所示

f75ee6c294be19689313eb0826c839b5.png

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

去除掉背景颜色

首先我们需要将照片的背景颜色给去除掉,这里用到的是第三方的接口removebg,官方链接是:

d0a4aac792dd339ec7c4c08f6dbafde6.png

我们在完成账号的注册之后,访问下面的链接获取api_key:https://www.remove.bg/api#remove-background

616864e9bedb810d56f6519d269aebb4.png

下面便是相对应的程序代码了,如下

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)

最后我们来看一下整体的效果

3becea155d39a74de629fe002e4a68bf.gif

6b7d56050fca484ab2b77345c49fbde6.gif

往期回顾

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

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

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

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

分享
点收藏
点点赞
点在看

http://lihuaxi.xjx100.cn/news/253414.html

相关文章

c++

c中关于STL的学习大家有什么建议和想法。转载于:https://blog.51cto.com/2948144/673496

【组队学习】【24期】集成学习(中)

集成学习(中) 开源内容: https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearning 基本信息 贡献人员:李祖贤、薛传雨、赵可、杨毅远、陈琰钰、李嘉骐学习周期:12天学习形式&a…

WatchStor观察:思科携EMC等合作伙伴 圈地数据中心市场

早在今年3月,思科在加利福尼亚州圣何塞市展会中展示了“统一计算系统”(Unified Computing System)之后,我们就明白,数据中心市场将会发生巨大改变,传统的以IBM、惠普、戴尔和Sun为主导的服务器电脑市场,将受到以思科为…

php相关书籍视频

虽然如今web领域,PHP JSP .NET 并驾齐驱,但PHP用的最广,原因不用我多说。 首先发一个PHP手册,方便查询,这个肯定是学PHP必备的。 下载地址:http://u.115.com/file/aq3e5sv9PHP100的视频教程,这个…

SpringBoot接入支付宝,实战来了!

点击关注公众号,Java干货及时送达👇支付宝推出了新的转账接口alipay.fund.trans.uni.transfer(升级后安全性更高,功能更加强大) ,老转账接口alipay.fund.trans.toaccount.transfer将不再维护,新老接口的一个区别就是新…

位运算应用口诀和实例

位运算应用口诀 清零取反要用与&#xff0c;某位置一可用或若要取反和交换&#xff0c;轻轻松松用异或移位运算要点 1 它们都是双目运算符&#xff0c;两个运算分量都是整形&#xff0c;结果也是整形。 2 "<<" 左移&#xff1a;右边空出的位上补0&#xff0c…

韦东山网课https://edu.csdn.net/course/play/207/1117

接口讲解https://edu.csdn.net/course/play/207/1117转载于:https://www.cnblogs.com/chulin/p/9878555.html

【组队学习】【24期】河北邀请赛(二手车价格预测)

河北邀请赛&#xff08;二手车价格预测&#xff09; 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-data-mining/tree/master/SecondHandCarPriceForecast 数据挖掘实践&#xff08;二手车价格预测&#xff09;的内容来自 Datawhale与天池联合发起…