吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4621|回复: 10
收起左侧

[其他原创] uniapp框架实现微信小程序一键置换个人证件照底色

[复制链接]
Fujj 发表于 2021-8-27 14:18
本帖最后由 Fujj 于 2021-8-29 20:59 编辑
原文地址:https://blog.csdn.net/weixin_44039406/article/details/119984497

实现过程:


首先用到的是百度云的ai算法模块【人体分析-人体分割】。注册地址https://login.bce.baidu.com/?account=&redirect=http%3A%2F%2Fconsole.bce.baidu.com%2Fai%2F%3F_%3D1629972109997#/ai/body/report/index~appId=2736483

注册比较简单,找到人体分析,先创建应用,根据提示填写完信息就可以了
image.png

注册完之后,会生成相应的秘钥
image.png

然后再领取下免费资源,领取之后大概30分钟左右生效,免费调用10000次
image.png


接下来就可以开工了
先获取百度云token,比较简单一个get就搞定了,会用到前面创建的百度云人体分割应用
[JavaScript] 纯文本查看 复制代码
uni.request({
                                url: 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=(创建应用时候的API Key)&client_secret=(创建应用时的Secret Key);
                                method: 'GET',
                                success: res => {
                                        this.uppic(res.data['access_token'], wx.arrayBufferToBase64(aa.readFileSync(this.tempFilePaths[0])));
                                }
                        });


把本地的图片上传到百度云ai接口,用到上个接口返回的access_token,百度云会直接返回一张切割后的图,放在foreground字段,我们这边转成图片存起来
[JavaScript] 纯文本查看 复制代码
uni.request({
                                url: 'https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg',
                                method: 'POST',
                                header: { 'content-type': 'application/x-www-form-urlencoded' },
                                data: { image: pic, access_token: tk },
                                success: res => {
                                        let url = 'data:image/png;base64,' + res.data.foreground;
                                        aa.writeFile({
                                                filePath: wx.env.USER_DATA_PATH + '/test.png',
                                                data: url.slice(22),
                                                encoding: 'base64',
                                                success: res => {
                                                        this.tempFilePaths = [wx.env.USER_DATA_PATH + '/test.png'];
                                                        this.canvasImgFun();
                                                        uni.hideLoading();
                                                        uni.showToast({
                                                                title: '上传成功'
                                                        });
                                                },
                                                fail: err => {
                                                        console.log(err);
                                                }
                                        });
                                },
                                fail: res => {
                                        console.log(res);
                                }
                        });


我们把保存后的图片直接渲染进Canvas,然后根据用户的选择生成底色,然后保存成图片
[JavaScript] 纯文本查看 复制代码
save() {
                        if (this.tempFilePaths[0] != wx.env.USER_DATA_PATH + '/test.png') {
                                uni.showToast({
                                        title: '换色后再保存',
                                        icon:'none'
                                })
                                return
                        }
                        uni.canvasToTempFilePath({
                            canvasId: 'myCanvas',
                                fileType: 'jpg',
                            success: function(res) {
                                uni.saveImageToPhotosAlbum({
                                        filePath: res.tempFilePath,
                                        success: function(res) {
                                                uni.showToast({
                                                        title: '保存成功',
                                                });
                                        },
                                        fail: function(err) {
                                                console.log(err);
                                        }
                                });
                            },
                            fail:function(err){
                                console.log(err)
                                uni.hideLoading()
                            }
                        },this)



总的来说比较简单,
成品可以在微信搜索小程序【常用工具集】尝试





发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

HEYZGQ 发表于 2021-8-27 14:26
大佬,厉害
105050201 发表于 2021-8-27 14:43
你阿曦 发表于 2021-8-27 15:00
 楼主| Fujj 发表于 2021-8-27 15:27
你阿曦 发表于 2021-8-27 15:00
昨天刚搞不定 用ps扣了半天

可以搜一下微信小程序【常用工具集】,成品可以用
emike99 发表于 2021-8-27 16:30
好东西学习一下
第一品霄 发表于 2021-8-27 19:56
学习一下了
qq91308 发表于 2021-8-28 14:16

谢谢分享
Gask 发表于 2021-8-29 17:26
本帖最后由 Gask 于 2021-9-4 16:33 编辑

老哥厉害
Gask 发表于 2021-8-30 09:24
本帖最后由 Gask 于 2021-9-4 16:33 编辑

老哥厉害
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表