微信小程式實現分享到朋友圈
#分享朋友圈現在大家的通用做法就是透過Canvas產生一張圖片後進行儲存,然後自行轉發朋友圈。最近專案有這個需求, 於是就記錄一下。
如果想要海報上的二維碼掃碼完直接跳到指定的頁面, 那麼就需要產生一個帶參數的二維碼,先看一下效果圖:
#一、先把程式碼寫上去
#index.wxml程式碼:
<view class="container"> <image src="{{shareImage}}" class="share-image"></image> <canvasdrawer painting="{{painting}}" class="canvasdrawer" bind:getImage="eventGetImage"/> <button bind:tap="eventDraw">绘制</button> <button bind:tap="eventSave">保存到本地</button> </view>
index.wxss程式碼:
.share-image { width: 600rpx; height: 810rpx; margin: 0 75rpx; padding: 1px; margin-top: 40px; } button { margin-top: 100rpx; }
#index.js程式碼:
Page({ data: { painting: {}, shareImage: '', }, onLoad() { this.eventDraw() }, eventDraw() { var that = this; wx.showLoading({ title: '绘制分享图片中', mask: true }) this.setData({ painting: { width: 375, height: 568, clear: true, views: [ //这个是一个纯白的图片,给整个画布一个白背景,要不然会有马赛克 { type: 'image', url: 'https://XXX.com/weixin/item/bai.jpg', width: 375, height: 568 }, //边框,直接拿了一张图,当做边框 { type: 'image', url: 'https://XXXXX.com/weixin/item/biankuang.png', width: 375, height: 568 }, //商品图 { type: 'image', url: 'https://XXX.com/seafood/public78fffad452d2e158636b.jpg', width: 328, height: 328, top:20, left:22, }, //商品名称 { type: 'text', content: '产品名称产品11111', fontSize: 20, lineHeight: 21, color: '#000000', textAlign: 'left', top: 360, left: 36, width: 290, MaxLineNumber: 2, breakWord: true, bolder: true }, //线条,同样也是用的图 { type: 'image', url: 'https://XXXX.com/weixin/item/xiantiao.png', width: 325, height: 5, top: 443, left:22 }, //商品价格 { type: 'text', content: '¥198.00', fontSize: 20, color: '#E62004', textAlign: 'left', top: 414, left: 36, bolder: true }, //名称 { type: 'text', content: '名称名称', fontSize: 15, lineHeight: 21, color: '#7E7E8B', textAlign: 'left', top: 414, left: 267, width: 70, MaxLineNumber: 1, breakWord: true, }, // 文字, 打不出这个文字带阴影的效果, 所以也用的图 { type: 'image', url: 'https://XXXX.com/weixin/item/wenzi.png', width: 145, height: 75, top: 460, left: 36, }, //二维码 { type: 'image', url: 'https://XXXX.com/Public/Home/images/banner/min_code.jpg', top: 455, left: 260, width: 85, height: 85 }, ] } }) }, eventSave() { wx.saveImageToPhotosAlbum({ filePath: this.data.shareImage, success(res) { wx.showToast({ title: '保存图片成功', icon: 'success', duration: 2000 }) } }) }, eventGetImage(event) { console.log(event) wx.hideLoading() const { tempFilePath, errMsg } = event.detail if (errMsg === 'canvasdrawer:ok') { this.setData({ shareImage: tempFilePath }) } } })
index.json裡面的程式碼:
{ "navigationBarTitleText": "生成海报", "usingComponents": { //在使用页面注册组件(下面有下载地址,如果放的路径不一样,自行就修改为你的路径就行) "canvasdrawer": "/components/canvasdrawer/canvasdrawer" } }
元件下載位址:
链接:https://pan.baidu.com/s/1i9zq01x58p1MdDMVmnz-_Q&shfl=sharepset 提取码:8hrj
##二、物件結構
1.資料物件的第一層需要三個參數: width、height、views。配置中所有的數字都是沒有單位的。這就意味著 canvas 繪製的是一個比例圖。具體顯示的大小直接把返回的圖片路徑放置到 image 標籤中即可。 2.目前可以繪製3種類型的配置: image、text、rect。配置的屬性基本上使用的都是 css 的駝峰名稱,還是比較好理解的。image(圖片)
意義 | 預設值 | 可選值 | |
所繪製的圖片位址,可以是本機圖片,如:/images/1.jpeg | |||
#左上角距離畫板頂部的距離 | |||
左上角距離畫板左邊的距離 | |||
要畫多寬 | 0 | ||
要畫多高 | 0 |
#屬性 | 意義 | 預設值 | #選用值 |
#content | 繪製文字 | 預設為空白 | |
color | 顏色 | black | |
#fontSize | 字體大小 | #16 | |
textAlign | 文字對齊方式 | left |
center、left、right |
lineHeight | 行高,只有在多行文字中才有用 | 20 | |
#top | 文字左上角距離畫板頂部的距離 | 0 | |
left | 文字左上角距離畫板左邊的距離 | 0 | |
breakWord | #是否需要換行 | false |
true、false |
MaxLineNumber最大行數,只有設定breakWord: true ,目前屬性才有效,超出行數內容的顯示為… | #2 |
#和MaxLineNumber 屬性搭配使用,width 是達到換行的寬度
0bolder | 是否加粗 | false | true、false |
rect (矩形,線條)
屬性 | 意義 | 預設值 | 可選值 |
#background | 背景顏色 | # black | |
top | #左上角距離畫板頂部的距離 | ||
left | #左上角距離畫板左邊的距離 | ||
width | 要畫多寬 | 0 | |
要畫多高 | 0 |
這個方法繪製微信小程式的海報非常簡單,簡單易懂,可以互相學習學習。 #
以上是微信小程式分享朋友圈生成海報的詳細內容。更多資訊請關注PHP中文網其他相關文章!