利用canvas實(shí)現(xiàn)邀請函編輯器

說白了就是用canvas生成一張圖片,圖片里的內(nèi)容可以任意添加刪除修改,并可拖動元素位置,可設(shè)置字體顏色大小。
最終要求的效果圖如下:


image.png

實(shí)現(xiàn)步驟

1、 編輯器的實(shí)現(xiàn)

使用 zrender 框架。可以快速的完成canvas的添加刪除拖拽等操作。
記錄插入元素的類型及屬性,目前繪制類型只有圖片(二維碼),文本(姓名,時間,地點(diǎn),公司,提示文字))兩種類型。根據(jù)類型把這些數(shù)據(jù)屬性保存到JSON。對應(yīng)的格式為:

backgroundImage:'xxxx.jpg', //背景圖片地址
elments:[ //用來保存元素的數(shù)組

{
type:'text', 
fild:'name' , //字段名 用來對應(yīng)替換動態(tài)數(shù)據(jù)
 label:'姓名',
x:100,
y:100,
color:'#fff',
fontSize:18
},

{
type:'image',
fild:'qrcode',
 label:報名二維碼',
x:100,
y:100,
color:'#fff',
width:18,
height:30
},

{
type:'text',
fild:'time',
 label:會議時間',
x:100,
y:100,
color:'#fff',
width:18,
height:30
},

{
type:'text',
fild:'address',
 label:會議地點(diǎn)',
x:100,
y:100,
color:'#fff',
fontSize:28
}

]

提交后 服務(wù)器保存此數(shù)據(jù)。對應(yīng)一個 /saveWxInvite的接口,post data is

{ 
   id:'event id',
   data:{ ... }
}

2. 服務(wù)端生成圖片

需求:當(dāng)參會者報名成功后推送一張邀請函圖片到微信(官方服務(wù)號推送)。

實(shí)現(xiàn)思路:服務(wù)端拿到參會者和參加的會議信息如:

{
name : '陽陽' ,  //姓名
qrcode :'7676676766' , //二維碼
time:'98899',
address:'xxxxxxxxxx' 
... ...
}

根據(jù)邀請函數(shù)據(jù)中fild類型對應(yīng)取數(shù)據(jù)中的動態(tài)信息 ,替換數(shù)據(jù)中的 label。然后利用服務(wù)端canvas繪制并生成圖片,最后發(fā)送到用戶微信,服務(wù)器上不需要保存此圖片。
node Canval模塊 https://github.com/Automattic/node-canvas

系統(tǒng)模版

系統(tǒng)模版為直接使用的內(nèi)置模版。不需要用戶自定義。

image.png

當(dāng)自定義功能完成后,我們手動保存幾個好看模版的data JSON入庫即可。
顯示的時候需要獲取這個模版列表。 調(diào)用 '/getWxInTpl'接口 ,返回 tpl list :

[
{
bgimg:'xxx.jpg',
tplId:'1'
},
{
bgimg:'xxx.jpg',
tplId:'2'
},
{
bgimg:'xxx.jpg',
tplId:'3'
},
... ...
]

根據(jù)此數(shù)據(jù)就是可以渲染顯示模版列表了。 保存的時候提交選中的模版ID即可。
繼續(xù)使用 /saveWxInvite的接口,post data is :

{ 
   id : 'event id',
   tplId : 'templateID'
}

后端根據(jù)兩種不同數(shù)據(jù)類型處理保存動作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容