微信小程序生成头像

功能

实现套用png透明图模板生成头像,可以指定模板,简单替换开箱即用。
可以自己选择图片,也可以通过微信头像生成。
能通过微信代码图片审查,调用微信小程序珊瑚安全API,实现对用户选择的头像进行安全审查。

效果

微信小程序生成头像_第1张图片微信小程序生成头像_第2张图片

源码

https://gitee.com/nickdlk/wechat_icon_generation

使用

自行创建一个微信小程序,下载微信开发者工具,下载源代码。

可以自定义的地方:
根目录下 app.json 可以修改标题

"navigationBarTitleText": "头像生成",

\pages\index\index.wxml 可以修改首页版权信息

背景图:
<image src="/images/background.jpg" class="background_a" mode="scaleToFill">image>
logo:
<image src='/images/logo.png' mode='aspectFit' style="width: 200px; height: 200px;">image>
 <view>美术设计: XXX view>
 <view>技术支持: Nick view>

图片可以直接替换源文件
本地样式 存放在images/logos/下 动态加载 但是因为小程序限制2048kb 存放数量有限 需要对样式进行压缩
可以将样式放在图床上,使用图床的链接

index\index.js

更换样式要修改draw函数下的画图代码

否则画出来的头像会有空白,没有填充满整个框
微信小程序生成头像_第3张图片
context.arc(85, 85, 150, 0, 2 * Math.PI); ○的xy 还有半径
context.drawImage(data, 25, 25, 120, 120); 填充头像进去 x,y 长宽

修改getLocalImg函数下的service

 /** 调用珊瑚安全检查上传的图片是否违规
             * https://developers.weixin.qq.com/community/servicemarket/detail/000a246b6fca70b76a896e6a25ec15
             * 登录后购买,填入接入文档里服务接口的service到下面的service中
             * */
            wx.serviceMarket.invokeService({
     
              service: '',//填自己的service
              api: 'imgSecCheck',
              data: {
     
                "Action": "ImageModeration",
                "Scenes": ["PORN", "POLITICS", "TERRORISM"],
                "ImageBase64": res.data,
                "Config": "",
                "Extra": ""
              },
            }).then(res => {
     
              //成功 获取返回信息
              console.log(res)
              // console.log(res.data.Response.Suggestion)
              if(res.data.Response.Suggestion=="PASS" ){
     
                wx.hideToast()
                console.log("跳转裁剪")
                wx.navigateTo({
     
                  url: `../upload/upload?src=${
       src}` //跳转裁剪
                })
              }else{
     
                console.error("图片违规")
                wx.hideToast()
                wx.showToast({
     
                  title: '图片违规,请重选!',
                  icon: 'none',
                  duration: 2500
                })
              }
            }).catch(err => {
     
              //错误
              wx.hideToast()
              console.error('invokeService fail !!!! ', err)
              if(res.errMsg != "invokeService:ok"){
     
                console.log("错误 额度不足或者其他原因")
                wx.showToast({
     
                  title: res.errMsg,
                  icon: 'none',
                  duration: 1500
                })
              }
            })
           }
       })

你可能感兴趣的:(小程序,小程序)