最近在做小程序,,,发明制作分享到朋侪圈图片是每个项目必需的。。。遇到坑较量多,,,写起来也较量繁琐,,,也没有找到类似组件,,,以是就自己下手写了一个。。。

json 搞定绘制图片90% 的使用场景
git clone https://github.com/kuckboy1994/mp_canvas_drawer
复制代码
想在手机上使用设置自己的 appid 即可。。。
编译模式中已经为你设置好较量常用的两种模式:
git clone https://github.com/kuckboy1994/mp_canvas_drawer 到外地
把 components 中的 canvasdrawer 拷贝到自己项目下。。。
在使用页面注册组件
{
"usingComponents": {
"canvasdrawer": "/components/canvasdrawer/canvasdrawer"
}
}
复制代码
在页面 **.wxml 文件中加入如下代码
<canvasdrawer painting="{{painting}}" bind:getImage="eventGetImage"/>
复制代码
painting 是需要传入的 json。。。 getImage 要领是绘图完成之后的回调函数,,,在 event.detail 中返回绘制完成的图片地点。。。
目今栗子中的 painting 简朴展示一下。。。详细设置请看 API
{
width: 375,
height: 555,
views: [
{
type: 'image',
url: 'https://hybrid.xiaoying.tv/miniprogram/viva-ad/1/1531103986231.jpeg',
top: 0,
left: 0,
width: 375,
height: 555
},
{
type: 'image',
url: 'https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83epJEPdPqQVgv6D8bojGT4DrGXuEC4Oe0GXs5sMsN4GGpCegTUsBgL9SPJkN9UqC1s0iakjQpwd4h4A/132',
top: 27.5,
left: 29,
width: 55,
height: 55
},
{
type: 'image',
url: 'https://hybrid.xiaoying.tv/miniprogram/viva-ad/1/1531401349117.jpeg',
top: 27.5,
left: 29,
width: 55,
height: 55
},
{
type: 'text',
content: '您的挚友【kuckboy】',
fontSize: 16,
color: '#402D16',
textAlign: 'left',
top: 33,
left: 96,
bolder: true
},
{
type: 'text',
content: '发明一件好货,,,约请你一起0元免费拿!',
fontSize: 15,
color: '#563D20',
textAlign: 'left',
top: 59.5,
left: 96
},
{
type: 'image',
url: 'https://hybrid.xiaoying.tv/miniprogram/viva-ad/1/1531385366950.jpeg',
top: 136,
left: 42.5,
width: 290,
height: 186
},
{
type: 'image',
url: 'https://hybrid.xiaoying.tv/miniprogram/viva-ad/1/1531385433625.jpeg',
top: 443,
left: 85,
width: 68,
height: 68
},
{
type: 'text',
content: '正品MAC魅适口红礼盒生日唇膏小辣椒Chili西柚情人',
fontSize: 16,
lineHeight: 21,
color: '#383549',
textAlign: 'left',
top: 336,
left: 44,
width: 287,
MaxLineNumber: 2,
breakWord: true,
bolder: true
},
{
type: 'text',
content: '¥0.00',
fontSize: 19,
color: '#E62004',
textAlign: 'left',
top: 387,
left: 44.5,
bolder: true
},
{
type: 'text',
content: '原价:¥138.00',
fontSize: 13,
color: '#7E7E8B',
textAlign: 'left',
top: 391,
left: 110,
textDecoration: 'line-through'
},
{
type: 'text',
content: '长按识别图中二维码帮我砍个价呗~',
fontSize: 14,
color: '#383549',
textAlign: 'left',
top: 460,
left: 165.5,
lineHeight: 20,
MaxLineNumber: 2,
breakWord: true,
width: 125
}
]
}
复制代码
{
width: 375,
height: 555,
views: [
{
type: 'image',
url: 'url',
top: 0,
left: 0,
width: 375,
height: 555
},
{
type: 'text',
content: 'content',
fontSize: 16,
color: '#402D16',
textAlign: 'left',
top: 33,
left: 96,
bolder: true
},
{
type: 'rect',
background: 'color',
top: 0,
left: 0,
width: 375,
height: 555
}
]
}
复制代码
数据工具的第一层需要三个参数: width、height、views。。。设置中所有的数字都是没有单位的。。。这就意味着 canvas 绘制的是一个比例图。。。详细显示的巨细直接把返回的图片路径放置到 image 标签中即可。。。
目今可以绘制3种类型的设置: image、text、rect。。。设置的属性基本上使用的都是 css 的驼峰名称,,,照旧较量好明确的。。。



最佳实践
绘制操作的时间最好 锁住屏幕 ,,,例如在点击绘制的时间
wx.showLoading({
title: '绘制分享图片中',
mask: true
})
复制代码
绘制完成之后
wx.hideLoading()
复制代码
详细可以参考项目下的 /pages/multiple
二维码和小程序码怎样绘制??
type: image 类型举行绘制即可。。。绘制流程相关
views 数组中的顺序代表绘画的先后顺序,,,会有笼罩的征象。。。请列位使用者注重。。。怎样实现圆形头像??
canvas 中没有绘制圆形图片的要领,,,以是使用了 hack 的方式来实现的。。。使用一张中心镂空的图片盖在头像上就可实现目今效果。。。
canvas drawer 组件为什么不直接显示canvas画板和其内容呢??
image 基础组件的所有显示模式了,,,还能设置宽高。。。
KESION pp电子软件
KESION pp电子软件是海内领先的在线教育软件及私域社交电商软件服务提供商,,,恒久专注于为企业提供在线教育软件及社交电商SaaS平台解决方案。。。
公司焦点产品云开店SaaS社交电商服务平台、在线教育SaaS服务平台、教育企业数字化SaaS云平台、企微营销助手、私有化自力安排品牌网校和在线教育咨询等。。。KESION 一直通过手艺立异,,,提供产品和服务,,,助力企业向数字化转型,,,通过科技驱动商业刷新,,,让商业变得更智慧!
随着小程序成为各人争先恐后的一大热门,,,许多商家和企业都期待着小程序能够给自己带来财产,,,而小程序注册方面也成为一大热门。。。...
随着小程序市场影响日趋增大,,,越来越许多商家都最先注册小程序,,,那么要怎样注册一个小程序,,,需要哪些条件,,,下面为各人介绍。。。...