首頁 >後端開發 >Python教學 >用 Python 製作視覺化 GUI 介面,一鍵實現證件照背景顏色的替換

用 Python 製作視覺化 GUI 介面,一鍵實現證件照背景顏色的替換

王林
王林轉載
2023-05-19 16:19:071458瀏覽

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

關於介面的大致模樣其實和先前的相差不大,大家應該都看過上一篇的內容。

介面大體的樣子

整體GUI的介面如下圖所示:

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

使用者在使用的時候可以選擇將證件照片替換成是“白底背景”或“紅底背景”,那麼在前端的介面上傳完成照片之後,後端的程式便會開始執行該有的操作。

去除掉背景顏色

首先我們需要將照片的背景顏色給去除掉,這裡用到的是第三方的介面removebg,官方連結是:

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

我們在完成帳號的註冊之後,造訪下面的連結取得api_key:https://www.remove.bg/api#remove-background

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

下面便是相對應的程式碼了,如下:

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)

最後我們來看看整體的效果

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

以上是用 Python 製作視覺化 GUI 介面,一鍵實現證件照背景顏色的替換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除