关于javascript:微信小程序云开发证件照3核心功能人像分割

31次阅读

共计 1364 个字符,预计需要花费 4 分钟才能阅读完成。

微信证件照小程序开发,第三话,通过周末的奋战,明天更新(图库 / 拍照)上传图片 - 图片的人像宰割 - 图片的背景更换,这个是这个小程序的核心内容,其余的也就是数据的增删改查了

掘金更新比拟早,之后会同步更新

曾经审核通过了

图片抉择入口

我这里把这两个离开写的,也能够合在一起用一个按钮,而后点击微信会自动弹框让用户抉择,成果大略是这样


微信提供的办法是# wx.chooseImage/wx.chooseMedia,官网文档连贯

图片宰割

上传完图片后,要把图片人像宰割进去,理论也就是抠图,我看到腾讯云,和百度云都有人体辨认,人像宰割的接口,两者都能够用,我用的是百度的(我的腾讯云没有收费额度了),上面我就从百度的人像宰割开始说了(具体的注册办法,实名认证等,就按零碎一步步操作吧!)


我应用了这两个接口,一个手势辨认我用来判断上传的图片是否为人像(看了下面的接口,没找到好点的),另外的就是人像宰割接口了(当初如同加了内测接口,就是证件照接口,有趣味的敌人们能够看下,我也在看,当初没用,当前应该会改下)


应用就间接看 node.js SDK 文档就能够了

代码实现

新建云函数,依照文档下面先下包

npm install baidu-aip-sdk

// 获取图片 url 地址
    const tempFileURL = await getFileUrlByFileID(event.fileID)
    
    // 云存储图片
    const tmpOriginImgSrc = encodeURI(`${tempFileURL}?imageMogr2/thumbnail/1500x1500|imageMogr2/format/jpg`)
    // 获取图片 buffer
    const imgBuffer = await getHttpBuffer(tmpOriginImgSrc)
    // 图片的 base64
    const imageBase64 = encodeURI(imgBuffer.toString('base64'))
    // 百度人像人脸检测
    const {result, result_num} = (await client.gesture(imageBase64))

    if(!result.length || result_num !==1 || result[0].classname !=='Face') return {res:false, msg: '图片不符合要求'}
    
    // 百度人像宰割后果
    const {foreground, error_code, error_msg} = (await client.bodySeg(imageBase64, { type: 'foreground'}))

    if (error_code) return {res:false, msg: error_msg}
    if (!foreground) return {res:false, foreground, error_code, error_msg}

    const resultFileId = await uploadBase64(foreground, openid)

总结

工夫关系,先不说图片组合了,下次会把图片组合一起说完,一起更新,次要流程也算是走完了,下次整顿后会分享出我的代码,一起学习。

刚提交了小程序,正在审核,等通过后会把小程序码放进去,先体验体验!!!

之后会继续分享,请继续关注哦!

码字不易,记得点赞哟!

正文完
 0