&nbs..."/> &nbs...">

首頁 >微信小程式 >小程式開發 >微信小程式分享朋友圈生成海報

微信小程式分享朋友圈生成海報

马冠亚
马冠亚原創
2020-07-08 18:45:01244瀏覽

微信小程式實現分享到朋友圈

#分享朋友圈現在大家的通用做法就是透過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: &#39;&#39;,
    },
    onLoad() {
        this.eventDraw()
    },
    eventDraw() {
        var that = this;
        wx.showLoading({
            title: &#39;绘制分享图片中&#39;,
            mask: true
        })
        this.setData({
            painting: {
                width: 375,
                height: 568,
                clear: true,
                views: [
                  //这个是一个纯白的图片,给整个画布一个白背景,要不然会有马赛克
                  {
                    type: &#39;image&#39;,
                    url: &#39;https://XXX.com/weixin/item/bai.jpg&#39;,
                    width: 375,
                    height: 568
                  },
                  //边框,直接拿了一张图,当做边框
                  {
                    type: &#39;image&#39;,
                    url: &#39;https://XXXXX.com/weixin/item/biankuang.png&#39;,
                    width: 375,
                    height: 568
                  },
                  //商品图
                  {
                    type: &#39;image&#39;,
                    url: &#39;https://XXX.com/seafood/public78fffad452d2e158636b.jpg&#39;,
                    width: 328,
                    height: 328,
                    top:20,
                    left:22,
                  },
                  //商品名称
                  {
                    type: &#39;text&#39;,
                    content: &#39;产品名称产品11111&#39;,
                    fontSize: 20,
                    lineHeight: 21,
                    color: &#39;#000000&#39;,
                    textAlign: &#39;left&#39;,
                    top: 360,
                    left: 36,
                    width: 290,
                    MaxLineNumber: 2,
                    breakWord: true,
                    bolder: true
                  },
                  //线条,同样也是用的图
                  {
                    type: &#39;image&#39;,
                    url: &#39;https://XXXX.com/weixin/item/xiantiao.png&#39;,
                    width: 325,
                    height: 5,
                    top: 443,
                    left:22
                  },
                  //商品价格
                  {
                      type: &#39;text&#39;,
                      content: &#39;¥198.00&#39;,
                      fontSize: 20,
                      color: &#39;#E62004&#39;,
                      textAlign: &#39;left&#39;,
                      top: 414,
                      left: 36,
                      bolder: true
                  },
                  //名称
                  {
                    type: &#39;text&#39;,
                    content: &#39;名称名称&#39;,
                    fontSize: 15,
                    lineHeight: 21,
                    color: &#39;#7E7E8B&#39;,
                    textAlign: &#39;left&#39;,
                    top: 414,
                    left: 267,
                    width: 70,
                    MaxLineNumber: 1,
                    breakWord: true,
                  },
                  // 文字, 打不出这个文字带阴影的效果, 所以也用的图
                  {
                    type: &#39;image&#39;,
                    url: &#39;https://XXXX.com/weixin/item/wenzi.png&#39;,
                    width: 145,
                    height: 75,
                    top: 460,
                    left: 36,
                  },
                  //二维码
                  {
                    type: &#39;image&#39;,
                    url: &#39;https://XXXX.com/Public/Home/images/banner/min_code.jpg&#39;,
                    top: 455,
                    left: 260,
                    width: 85,
                    height: 85
                  },
                ]
            }
        })
    },
    eventSave() {
        wx.saveImageToPhotosAlbum({
            filePath: this.data.shareImage,
            success(res) {
                wx.showToast({
                    title: &#39;保存图片成功&#39;,
                    icon: &#39;success&#39;,
                    duration: 2000
                })
            }
        })
    },
    eventGetImage(event) {
        console.log(event)
        wx.hideLoading()
        const {
            tempFilePath,
            errMsg
        } = event.detail
        if (errMsg === &#39;canvasdrawer:ok&#39;) {
            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(圖片)

屬性意義預設值可選值#url所繪製的圖片位址,可以是本機圖片,如:/images/1.jpegtop#左上角距離畫板頂部的距離#left左上角距離畫板左邊的距離width要畫多寬0height要畫多高0

text(文字)









textAlign文字對齊方式leftbreakWord#是否需要換行falsewidth
#屬性 意義 預設值 #選用值
#content 繪製文字 預設為空白
color 顏色 black
#fontSize 字體大小 #16

center、left、right
lineHeight 行高,只有在多行文字中才有用 20
#top 文字左上角距離畫板頂部的距離 0
left 文字左上角距離畫板左邊的距離 0

true、false
MaxLineNumber

最大行數,只有設定breakWord: true ,目前屬性才有效,超出行數內容的顯示為…
#2

#和MaxLineNumber 屬性搭配使用,width 是達到換行的寬度

0bolder是否加粗falsetrue、false
###textDecoration######顯示中劃線、底線效果# #####none######underline(底線)、line-through(中劃線)############

rect (矩形,線條)

## height要畫多高0
屬性 意義 預設值 可選值
#background 背景顏色 # black
top #左上角距離畫板頂部的距離

left #左上角距離畫板左邊的距離

width 要畫多寬 0

這個方法繪製微信小程式的海報非常簡單,簡單易懂,可以互相學習學習。 #

以上是微信小程式分享朋友圈生成海報的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn