中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在微信小程序中生成分享海報

發布時間:2021-05-20 16:37:51 來源:億速云 閱讀:764 作者:Leah 欄目:web開發

本篇文章給大家分享的是有關怎么在微信小程序中生成分享海報,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

制作要求:

  • 海報以彈窗形式展現,各種手機型號都可以正常顯示

  • 海報的內容由背景圖、日期、隨機的名言警句、活動的二維碼及用戶的參加活動的信息

  • 海報保存的圖片大小為 iphone 6 的兩倍圖(750 * 1334)

由于看到的彈窗圖片與保存的圖片是兩種大小,所以一開始看了些網上的其他教程,建議是搞兩個 canvas 一個大的一個小的。實際過程中,采用了一個大的 canvas ,讓其偏離視窗顯示區域(不可見)并生成臨時文件,彈窗的圖片再使用 img 組件,引入臨時文件,設置其高度;而保存的時候則直接下載臨時文件。

雖然是實現了,但是后來在優化的過程中,這個方案也重新設計了。下面具體介紹下優化過的方案:

  • 優先使用一個 canvas 繪制二維碼;

  • 彈窗的圖片即為一個 canvas;

  • 分享的圖片為該 canvas 導出的大圖片;

  • 為了達到最佳效果,名言警句的換行錄入時就處理好。

設計彈窗的圖片比例

由于最后海報的圖片大小為 iphone 6 的兩倍圖(750 * 1334),所以這里彈窗的圖片也即是 canvas 的大小,設計為對應的尺寸的某個比例。

彈窗圖片的高度 = 視窗的高度 - 上下留白 - 按鈕的高度 - 圖片與按鈕的距離
imgHeight = 100vh - 40rpx * 2 - 50rpx - 15rpx

彈窗圖片的寬度 /  彈窗圖片的高度 = 750 / 1334
彈窗圖片的寬度 = (750 / 1334) * 彈窗圖片的高度

由于像素只能是整數,所以這樣繪制出來的圖片可能底部會有1px的空白,所以在設置高度的時候可以再減掉 1px,這不會影響視覺效果。

繪制背景圖

如果是網絡圖片,繪制背景圖之前一定要先下載該圖片,可通過 wx.getImageInfo wx. downloadFile 下載圖片,下載成功后將其塞進臨時地址,然后使用 wx canvas 的 drawImage 繪制。注意圖片的格式不能是 gif。

繪制二維碼

繪制二維碼換了好幾個庫,每個在安卓下面生成的二維碼都會頻現失敗。查了好些資料,說是安卓繪制的時候要設置個 setTimeout,于是最終選擇了weapp-qrcode,修改了其繪制的函數,增加了setTimeout(還真別說,加上二維碼繪制就成功了)。

ctx.draw(false, function (e) {
  setTimeout(() => { // 修改增加的
    options.callback && options.callback(e)
  }, 20);
})

另:目前這些繪制小程序二維碼的庫都是在一個單獨的新 canvas 中完成的,只要對源碼稍作修改,就可以提供另一個接口,直接在一個現有的 canvas (表示 canvas 中一開始繪制了其他內容) 中繪制。

如果二維碼掃不出來,則表示二維碼繪制出了問題。但安卓微信 6.7.2 版本本身有個 bug,二維碼本身是沒有問題,它卻不能識別。不過升級下微信版本就好了。

保存圖片

  • 先要獲取用戶是否開啟用戶授權相冊

  • 如果沒有權限,則彈窗提示開通權限,如果有權限直接調用 saveImageToPhotosAlbum 接口保存圖片

  • 如果彈窗提示接受開通權限,則調用 saveImageToPhotosAlbum 接口保存圖片

  • 如果彈窗提示拒絕則再次彈窗是否去設置開通權限,如果是則進入設置權限

性能注意

經實踐測試整個繪制過程其實還是很快的,但是如果有保存臨時文件操作( wx.canvasToTempFilePath ),那么這個操作一般得占一半時間左右。除此之外,有個 measureText api,用來測量文字的長度,這個在實現自動換行的時候用得到,但是比較耗性能。

以上就是怎么在微信小程序中生成分享海報,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上林县| 屯昌县| 综艺| 竹北市| 乐都县| 华蓥市| 松原市| 兴文县| 绥德县| 介休市| 明光市| 福泉市| 错那县| 山丹县| 山西省| 阜阳市| 富裕县| 北安市| 牙克石市| 万安县| 莲花县| 平和县| 辉南县| 大连市| 沁水县| 江北区| 凤城市| 甘孜县| 台安县| 陆川县| 鸡泽县| 获嘉县| 且末县| 岳西县| 巴青县| 平湖市| 蓝山县| 尼勒克县| 怀远县| 资阳市| 尼玛县|