微信小程序點擊生成朋友圈分享圖(遇到的坑)
上個月boss交給我個微信小程序的活,告訴我只需要負責前端頁面這塊,問我多久做完,于是我不知天高地厚的說 一禮拜就能完工,哈哈哈,果然,現(xiàn)實總是那么無情的來打臉了。。。磨磨蹭蹭一共用了將近3個禮拜才算完事。
今天就來總結下遇到的各種坑好了~~~
由于做的是仿照包你說的小程序,這里就借用包你說的截圖好啦
(這個做出來是模擬器跟真機上都會顯示生成的圖片的,鬼知道是為啥。。)


唔,不廢話了,直接上代碼好啦
A:wxml(一定要加上image標簽,如果你沒有加的話,那么即使圖片生成了,在頁面上也是不會顯示的,問過大神之后我才知道我之前一直沒弄出來是因為我沒加image標簽)
<view hidden="{{maskHidden}}" class="mask"></view>
<view class='canvas-box'>
<canvas style="width:750rpx; height:940rpx;" canvas-id="myCanvas"/>
<image src='{{imagePath}}'></image>
</view>
B:wxss(canvas-box的樣式運行出來不會受影響,就是千萬別寫top:0;一定要往下點,要不然會遮蓋住原頁面本身的東西,導致原頁面button按鈕全沒效果)
.mask
{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0,1);
opacity: 0;
display: flex;
justify-content: center;
align-items: center;
}
.canvas-box
{
position: fixed;
top: 999999rpx;left: 0
}
C:js重點來了(實話實說,我也是照著網上的demo改的,不懂的千萬不要來找我問,跪求,本人渣渣一枚。。。)
//share.js
Page({
data: {
imagePath: "/images/shareimg_bg.jpg",
imageTx: "http://img0.imgtn.bdimg.com/it/u=1079555585,1801783759&fm=27&gp=0.jpg",
imageEwm: "/images/ewm.jpg",
maskHidden: true,
},
onLoad: function (options) {
// 頁面初始化 options為頁面跳轉所帶來的參數(shù)
var size = this.setCanvasSize();//動態(tài)設置畫布大小
// this.createNewImg();
//創(chuàng)建初始化圖片
},
//適配不同屏幕大小的canvas 生成的分享圖寬高分別是 750 和940,老實講不知道這塊到底需不需要,然而。。還是放了,因為不寫這塊的話,模擬器上的圖片大小是不對的。。。
setCanvasSize: function () {
var size = {};
try {
var res = wx.getSystemInfoSync();
var scale = 750;//畫布寬度
var scaleH = 940 / 750;//生成圖片的寬高比例
var width = res.windowWidth;//畫布寬度
var height = res.windowWidth * scaleH;//畫布的高度
size.w = width;
size.h = height;
} catch (e) {
// Do something when catch error
console.log("獲取設備信息失敗" + e);
}
return size;
},
//將1繪制到canvas的固定
settextFir: function (context) {
let that=this;
var size = that.setCanvasSize();
var textFir = "發(fā)了一個紅包";
console.log(textFir);
context.setFontSize(24);
context.setTextAlign("center");
context.setFillStyle("#fee6b5");
context.fillText(textFir, size.w / 2, size.h * 0.25);
context.stroke();
},
//將2繪制到canvas的固定
settextSec: function (context) {
let that = this;
var size = that.setCanvasSize();
var textSec = "長按識別小程序,領獎金";
context.setFontSize(14);
context.setTextAlign("center");
context.setFillStyle("#fee6b5");
context.fillText(textSec, size.w / 2, size.h * 0.88);
context.stroke();
},
//將canvas轉換為圖片保存到本地,然后將圖片路徑傳給image圖片的src
createNewImg: function () {
var that = this;
var size = that.setCanvasSize();
var context = wx.createCanvasContext('myCanvas');
var path = "/images/shareimg_bg.jpg";
var imageTx = that.data.imageTx;
var imageEwm = that.data.imageEwm;
var imageZw = "/images/xcxewm.png";
context.drawImage(path, 0, 0, size.w, size.h);
context.drawImage(imageTx, size.w / 2 - 25, size.h * 0.02, size.w * 0.14, size.w * 0.14);
context.drawImage(imageEwm, size.w / 2 - 60, size.h * 0.32, size.w * 0.33, size.w * 0.33);
context.drawImage(imageZw, size.w / 2 - 25, size.h * 0.7, size.w * 0.14, size.w * 0.14);
this.settextFir(context);
this.settextSec(context);
console.log(size.w, size.h)
//繪制圖片
context.draw();
//將生成好的圖片保存到本地,需要延遲一會,繪制期間耗時
wx.showToast({
title: '生成中...',
icon: 'loading',
duration: 2000
});
setTimeout(function () {
wx.canvasToTempFilePath({
canvasId: 'myCanvas',
success: function (res) {
var tempFilePath = res.tempFilePath;
console.log(tempFilePath);
that.setData({
imagePath: tempFilePath,
canvasHidden: false,
maskHidden: true,
}); //將生成的圖片放入到《image》標簽里
var img = that.data.imagePath;
wx.previewImage({
current: img, // 當前顯示圖片的http鏈接
urls: [img] // 需要預覽的圖片http鏈接列表
})
},
fail: function (res) {
console.log(res);
}
});
}, 2000);
},
})
以上,出來的效果是醬紫的 (渣渣實在不知道要怎么把頭像和二維碼畫成圓角矩形的和圓形的了,還好產品大大不挑剔,感謝)

當然 ,如果有小可愛能解決這個問題的話,還望不吝指教~~~
總結
到此這篇關于微信小程序點擊生成朋友圈分享圖的文章就介紹到這了,更多相關小程序 朋友圈分享圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
bootstrap——bootstrapTable實現(xiàn)隱藏列的示例
本篇文章主要介紹了bootstrapTable實現(xiàn)隱藏列的示例,具有一定的參考價值,有興趣的可以了解一下。2017-01-01
動態(tài)創(chuàng)建script標簽實現(xiàn)跨域資源訪問的方法介紹
本篇文章主要是對動態(tài)創(chuàng)建script標簽實現(xiàn)跨域資源訪問的方法進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-02-02
JavaScript中如何讓?x?==?1?&&?x?==?2?&&?x?==?3?等式成立
這篇文章主要介紹了JavaScript中如何讓x==1&&x==2&&x==3等式成立,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-07-07
JavaScript實現(xiàn)更改網頁背景與字體顏色的方法
這篇文章主要介紹了JavaScript實現(xiàn)更改網頁背景與字體顏色的方法,可實現(xiàn)點擊按鈕改變網頁背景色的功能,具有一定參考借鑒價值,需要的朋友可以參考下2015-02-02
購物車前端開發(fā)(jQuery和bootstrap3)
針對購物車的操作,進行產品數(shù)量的增加減少,刪除購物車中產品項,本文使用JQuery1.11和bootstrap3進行購物車開發(fā),感興趣的小伙伴們2016-08-08
實例詳解JavaScript中setTimeout函數(shù)的執(zhí)行順序
關于javascript的運行機制大家都應該有所了解了吧,其實javascript是一個單線程的機制,但是因為隊列的關系它的表現(xiàn)會讓我們感覺是一個多線程的錯覺。下面這篇文章通過實例主要給大家介紹了關于JavaScript中setTimeout函數(shù)執(zhí)行順序的相關資料,需要的朋友可以參考下。2017-07-07

