欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

微信小程序 | 使用 canvas 生成朋友圈分享圖片并保存到手機相冊 ... ... ... .. - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

微信小程序 | 使用 canvas 生成朋友圈分享圖片并保存到手機相冊 ... ... ... ..

發(fā)表時間:2021-3-31

發(fā)布人:葵宇科技

瀏覽次數(shù):163

小程序只能轉(zhuǎn)發(fā)給好友,或者轉(zhuǎn)發(fā)到微信群,并不能轉(zhuǎn)發(fā)到朋友圈,那么朋友圈的巨大流量應該怎么利用起來呢?

目前來看,很多小程序的做法是生成一張帶小程序碼的圖片,然后用戶可以分享圖片到朋友圈,通過這樣的方式來導朋友圈的流量。

但是這樣做還是有一定風險的,有可能會被騰訊打上誘導分享的標簽,具體可以做到什么程度還不是很清楚。

怎樣生成圖片并保存呢?這篇文章做一些簡單的嘗試,生成一個帶文字和小程序碼的圖片,希望能對你有一些啟發(fā)。

這個圖片的構成是:一個矩形,既整塊畫布、文字內(nèi)容、一條橫線和一個小程序碼。

首先來看 wmxl 文件:

<view>
<canvas style="width:100%;height:{{contentHeight}}px" canvas-id="myCanvas">canvas>
<view class="edit-footer">
<button class="button-done" type="primary" bindtap="savePic">保存圖片button>
view>
view>

使用 來表示畫布,畫布的寬取屏幕的寬,高根據(jù)內(nèi)容的高度來動態(tài)獲取。

再來看 js 文件:

drawSquare: function (ctx, height) {
ctx.rect(0, 50, this.data.windowWidth, height);
ctx.setFillStyle("#f5f6fd");
ctx.fill()
}

畫矩形,也是整塊畫布的大小,寬度是屏幕寬度,高度根據(jù)內(nèi)容多少來動態(tài)設置。

drawFont: function (ctx, content, height) {
ctx.setFontSize(16);
ctx.setFillStyle("#484a3d");
ctx.fillText(content, this.data.offset, height);
}

設置文字大小,并填充顏色。

drawLine: function (ctx, height) {
ctx.beginPath();
ctx.moveTo(this.data.offset, height);
ctx.lineTo(this.data.windowWidth - this.data.offset, height);
ctx.stroke('#eee');
ctx.closePath();
}

畫線。

createNewImg: function (lineNum) {
let that = this;
let ctx = wx.createCanvasContext('myCanvas');
let contentHeight = lineNum * that.data.lineHeight + 180;
that.drawSquare(ctx, contentHeight);
that.setData({ contentHeight: contentHeight });
let height = 100;
for (let item of that.data.thinkList) {
if (item !== 'a') {
that.drawFont(ctx, item, height);
height += that.data.lineHeight;
}
}
that.drawLine(ctx, lineNum * that.data.lineHeight + 120);
that.drawFont(ctx, that.data.footer, lineNum * that.data.lineHeight + 156);
ctx.drawImage('../../static/images/think.png', that.data.windowWidth - that.data.offset - 50, lineNum * that.data.lineHeight + 125, 50, 50);
ctx.draw();
}

根據(jù)文字多少動態(tài)計算高度,然后依次畫出矩形,文字,橫線和小程序碼。

savePic: function () {
let that = this;
wx.canvasToTempFilePath({
x: 0,
y: 50,
width: that.data.windowWidth,
height: that.data.contentHeight,
canvasId: 'myCanvas',
success: function (res) {
util.savePicToAlbum(res.tempFilePath)
}
})
}

保存圖片。

說明一下文字的顯示邏輯,由于文字是不能自動換行的,所以需要提前設置好文字的大小和每行顯示文字的個數(shù),然后按照每行顯示的個數(shù)來對文字進行分組,最后再顯示。

以上均為代碼片段,可以到我的 GitHub來下載源碼。如果有不清楚的地方歡迎留言。

GitHub 地址:源碼傳送門

相關案例查看更多