實戰丨用雲開發快速構建最美AI畢業照小程序


項目背景

為什么要做這個小程序

疫情原因,2020年的畢業季也不同了。很多畢業生沒有舉辦正式的畢業典禮,也沒有照畢業照,覺得這是人生的一大遺憾.為了彌補這一遺憾,我嘗試用雲開發快速實現一個雲畢業照小程序,紀念我們的青春年華,用戶上傳人臉照片即可生成學士服雲畢業照,小程序支持學士服、碩士服、博士服等個性服裝,而且可以通過雲開發CMS管理系統隨時隨地管理小程序雲開發內容數據。

為什么選擇了雲開發?

雲開發提供了一站式服務,開發者無需管理后端服務架構,即可輕松擁有各種后端能力,極大減輕開發過程中繁雜的后端操作,使小程序開發更簡單。

雲開發 CMS 內容管理系統是雲開發提供的一個擴展程序,可以在雲開發控制台一鍵安裝在自己的雲開發環境中,不用編寫代碼就可以使用,還提供了 PC /移動端瀏覽器訪問支持,支持文本、富文本、圖片、文件、關聯類型等多種類型的可視化編輯。

小程序效果預覽:

圖

最終生成的照片如圖:

圖

小程序功能的大致思路:

  • 用戶選擇一張人臉圖片
  • 調用圖片內容安全審核
  • 用戶選擇性別,學歷信息,獲取正確的素材ID
  • 調用騰訊AI人臉融合API,得到學士服圖像
  • 用戶選擇背景圖,
  • canvas繪制用戶雲畢業照海報

資源准備

在項目的開發前,應進行以下准備:

一、新建小程序雲開發項目,並開通“珊瑚”圖片內容安全

首先,在微信開發者工具新建應用,並勾選小程序·雲開發

其次,由於小程序需要用戶上傳圖片,所以必須使用圖片內容安全審查,需要開通:”珊瑚“圖片內容安全,(測試階段選擇免費版本資源包即可),地址:

https://developers.weixin.qq.com/community/servicemarket/detail/000a246b6fca70b76a896e6a25ec15

請在訂單中授權的小程序中勾選指定的小程序,如圖:

圖

由於圖片審核API限制圖片經過base64編碼的內容。最大不得超過4M,所以此處需要先壓縮后調用審核,壓縮代碼如下:

  wx.compressImage({
    src: path, // 圖片路徑
    quality: 0.8, // 壓縮質量,根據需求設置
    success:async(res)=> {
      resolve({
        data: res.tempFilePath
      })
    }
  })

在頁面中調用珊瑚圖片內容安全API代碼如下:

doImgSecCheck: function (ImageBase64) {
    var d = Date.now()
    wx.serviceMarket.invokeService({
      service: 'wxee446d7507c68b11',
      api: 'imgSecCheck',
      data: {
        "Action": "ImageModeration",
        "Scenes": ["PORN", "POLITICS", "TERRORISM"],
        "ImageUrl": "",
        "ImageBase64": ImageBase64,
        "Config": "",
        "Extra": ""
      },
    }).then(res => {
      console.log(JSON.stringify(res))
      wx.showModal({
        title: 'cost',
        content: (Date.now() - d) + ' ',
      })
    })
  },

二、登錄騰訊雲 AI 並開通人臉融合 API

人臉融合簡介

騰訊雲神圖·人臉融合(Face Fusion)是由騰訊雲與優圖實驗室、天天P圖聯合打造的 AI 變臉玩法。通過快速精准地定位人臉關鍵點,將用戶上傳的照片與特定形象進行面部層面融合,使生成的圖片同時具備用戶與特定形象的外貌特征,支持單臉、多臉、選臉融合,滿足不同的營銷活動需求。

開通前需要准備好我們的素材圖,也就是模版圖,素材圖用途如下:

圖

登錄騰訊AI,進入管理控制台,開通人臉融合接口權限:

圖

開通后請點擊創建活動,填寫活動名稱,活動創建完成后如圖:

圖

創建活動免費,在程序測試階段,可以使用活動包含的500次免費調用

活動創建完畢后,在活動列表內點擊“素材管理”給活動添加素材,並記錄素材ID,例如下圖素材對應的是“女 文科 學士服 qc_300380_815359_6”,需要將這些信息通過CMS管理系統添加到小程序數據庫,素材ID如下圖:

圖

使用雲開發 CMS

雲開發CMS簡介:

雲開發 CMS 內容管理系統是雲開發 CloudBase 提供的一個擴展程序,可以在雲開發控制台一鍵安裝在自己的雲開發環境中,讓開發人員和內容運營者隨時隨地管理小程序 / Web 等多端產生的內容數據。無須編寫代碼即可使用,還提供了 PC / 移動端瀏覽器的訪問支持,支持文本、富文本、Markdown、圖片、文件、關聯類型等多種類型的可視化編輯。

點擊此處了解更多

開通CMS之后,需要登錄CMS,在內容設置新建“模版圖”的內容類型,如圖:

圖

內容類型新建完畢之后,在“模版圖”內容類型下新建條目,填入剛才的素材ID等信息,如圖:

圖

保存之后,對應的雲數據庫如圖:

圖

雲函數調用 AI 接口

由於本小程序為雲開發版本,並沒有后台服務器,所以人臉融合API將在雲函數完成調用.

首先需要給新建一個雲函數“faceMerge”,並在終端為雲函數安裝騰訊雲開發者工具套件(SDK)3.0,

SDK地址: https://github.com/TencentCloud/tencentcloud-sdk-nodejs

安裝如圖:

圖

為方便調用,此處將人臉融合API封裝,然后通過雲函數入口文件main函數調用,如圖

圖

封裝人臉融合API代碼,代碼內有詳細注釋,如下:

const tencentcloud = require("tencentcloud-sdk-nodejs");

// 導入對應產品模塊的client models。
const FacefusionClient = tencentcloud.facefusion.v20181201.Client;
const models = tencentcloud.facefusion.v20181201.Models;

const Credential = tencentcloud.common.Credential;
const ClientProfile = tencentcloud.common.ClientProfile;
const HttpProfile = tencentcloud.common.HttpProfile;

// 實例化一個認證對象,入參需要傳入騰訊雲賬戶secretId,secretKey
let cred = new Credential("", "");

// 實例化一個http選項,可選的,沒有特殊需求可以跳過。
let httpProfile = new HttpProfile();
httpProfile.endpoint = "facefusion.tencentcloudapi.com";//指定接入地域域名(默認就近接入)

// 實例化一個client選項,可選的,沒有特殊需求可以跳過。
let clientProfile = new ClientProfile();
clientProfile.httpProfile = httpProfile;

// 實例化要請求產品
let client = new FacefusionClient(cred, "", clientProfile);
// 實例化一個請求對象,並填充參數
let req = new models.FaceFusionRequest();
/**
 * 調用騰訊AI人臉融合API
 * @param {String} ModelId 素材ID
 * @param {String} base64 用戶頭像base64
 */
const tencentFaceFusionApi = async(ModelId,base64)=>{
  return new Promise((resolve)=>{
    let params = '{\"ProjectId\":\"300380\",\"ModelId\":\"'+ModelId+'\",\"Image\":\"'+base64+'\",\"RspImgType\":\"base64\"}'
    // 傳入參數
    req.from_json_string(params);
    // 通過client對象調用想要訪問的接口,需要傳入請求對象以及響應回調函數
    client.FaceFusion(req, function(errMsg, response) {
       // 返回response對象
      resolve({
        response,errMsg
      })
    });
  })
}
module.exports = {
  tencentFaceFusionApi
}

總結

雲畢業相冊開發核心內容有:微信小程序雲開發,騰訊雲新能力雲開發CMS內容管理系統,騰訊AI開放平台,珊瑚圖片內容安全。

使用小程序雲開發的體驗用一句話概括就是:Less is more,需要關心的事情變少了,但我們能做的事情卻更多了。用雲開發,我們不需要再過多關注服務端的搭建和運維,而只需專注於業務的開發和產品的實現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM