程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python】用Python制作可視化GUI界面,一鍵實現證件照背景顏色的替換

編輯: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)

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

往期精彩回顧
適合初學者入門人工智能的路線及資料下載(圖文+視頻)機器學習入門系列下載機器學習及深度學習筆記等資料打印《統計學習方法》的代碼復現專輯機器學習交流qq群955171419,加入微信群請掃碼


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved