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

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

界面大体的样子

整体GUI的界面如下图所示

15fb4954e080ae2fa282fa7aff36961b.png

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

去除掉背景颜色

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

7945fd04232cc06f8f8e16e969d335d6.png

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

c9921f020a10928b32dc6798f8f991ca.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)

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

bef6633426214e0916490f9d946ada1b.gif

NO.1

往期推荐

Historical articles

用Python制作可视化GUI界面,一键实现多种风格的照片处理

用Python制作可视化GUI界面,一键提取图片当中的数据并保存至Excel当中

总结了 30 段极简 Python 代码

用Python制作可视化GUI界面,一键实现自动分类管理文件!

分享、收藏、点赞、在看安排一下?

50813c079024a2ef1a6986f7beeca333.gif

bb48662f86c2206038dbfaa2a915ef18.gif

41b4551e3adc59f4ff9f3b7d1825f339.gif

9f64e6f215e8f9109202b18ab803dc33.gif

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值