微信小程序如何使用canvas二維碼保存至手機(jī)相冊(cè)
前言
在使用canvas繪制海報(bào)的過(guò)程中不建議使用原生來(lái)進(jìn)行畫圖,因?yàn)槟J(rèn)是不支持rpx像素的,px不會(huì)做到自適應(yīng)。
推薦使用插件 Painter
github地址
github.com/Kujiale-Mob (本地下載)…
配置很簡(jiǎn)單,也容易上手,無(wú)論是畫矩形,還是將圖片合成canvas;還是自己定義文字;都是很方便的。
附上一個(gè)簡(jiǎn)單的例子吧

<painter :customStyle="customStyle" :palette="imgDraw" />
//
const _this=this;
wx.getSystemInfo({
success (res) {
_this.drawCanvas(res.windowHeight);
}
})
drawCanvas(height) {
//這里的canvas的高是動(dòng)態(tài)獲取設(shè)備的高度,做到自適應(yīng)
const that = this;
let heightVal=height*2+'rpx';
this.imgDraw = {
width: '750rpx',
height: heightVal,
background: '#fff',
views: [
{
type: "rect",
css: {
top: '20rpx',
left: '130rpx',
color: '#1A1A1A',
width: '660rpx',
height: '220rpx',
borderRadius: '32rpx'
}
},
{
type: 'image',
url: './a.jpg',
css: {
top: '36rpx',
left: '16rpx',
width: '188rpx',
height: '188rpx'
}
},
{
type: 'text',
text: '',
css: {
top: '54rpx',
left: '260rpx',
fontSize: '48rpx',
color: "#fff"
}
},
{
type: 'text',
text: '文字部分',
css: {
top: '134rpx',
left: '260rpx',
fontSize: '30rpx',
color: "#d1d1d1"
}
},
{
type: 'text',
text: '1333333333',
css: {
top: '196rpx',
left: '260rpx',
fontSize: '26rpx',
color: "#d1d1d1"
}
},
{
type: 'text',
text: '李四',
css: {
top: '304rpx',
left: '302rpx',
fontSize: '24rpx',
color: "#767676"
}
},
{
type: 'image',
url: '/icon-localtion.png',
css: {
top: '275rpx',
left: '260rpx',
width: '26rpx',
height: '168rpx'
}
},
{
type: 'image',
url: '二維碼.png',
css: {
top: '646rpx',
left: '236rpx',
width: '278rpx',
height: '278rpx'
}
}
]
}
let { path: __path } = mpvue.getStorageSync('createImagePath')
mpvue.saveImageToPhotosAlbum({
filePath: __path,
success(res) {
// mpvue.showToast({
// title: '保存成功',
// icon: 'success',
// duration: 800,
// mask: true
// });
},
fail(res) {
// mpvue.showToast({
// title: '保存失敗',
// icon: 'fail',
// duration: 800,
// mask: true
// });
}
});
},
這里涉及到畫二維碼, 如果你的二維碼圖片不是一個(gè)線上的鏈接的話,這時(shí)需要做一些小操作。
我的項(xiàng)目中二維碼的圖片傳過(guò)來(lái)是一個(gè)流,所以用img的src默認(rèn)發(fā)送get請(qǐng)求,就能拿到這個(gè)圖片了。
所以u(píng)rl會(huì)直接發(fā)送get請(qǐng)求拿到圖片。
canvas的層級(jí)
canvas的層級(jí)是最高的,底部的分享塊會(huì)被遮住,這時(shí)你需要用兩套方案,一個(gè)是純展示用的,用正常的html來(lái)寫,給用戶看這個(gè)名片。
下載或分享的時(shí)候再y用canvas生產(chǎn)你想要圖片,接著調(diào)用微信的保存api,將圖片下載或分享。
let { path: __path } = mpvue.getStorageSync('createImagePath')
mpvue.saveImageToPhotosAlbum({
filePath: __path,
success(res) {
// mpvue.showToast({
// title: '保存成功',
// icon: 'success',
// duration: 800,
// mask: true
// });
},
fail(res) {
// mpvue.showToast({
// title: '保存失敗',
// icon: 'fail',
// duration: 800,
// mask: true
// });
}
});
此時(shí)就能順利完成保存名片的功能了。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
- 微信小程序?qū)崿F(xiàn)時(shí)間預(yù)約功能
- 微信小程序掃描普通二維碼跳轉(zhuǎn)到小程序指定頁(yè)面操作方法
- 微信小程序點(diǎn)擊圖片實(shí)現(xiàn)長(zhǎng)按預(yù)覽、保存、識(shí)別帶參數(shù)二維碼、轉(zhuǎn)發(fā)等功能
- 微信小程序云開發(fā)如何使用云函數(shù)生成二維碼
- 小程序掃描普通鏈接二維碼跳轉(zhuǎn)小程序指定界面方法
- 微信小程序掃描二維碼獲取信息實(shí)例詳解
- 微信小程序?qū)崿F(xiàn)獲取小程序碼和二維碼java接口開發(fā)
- 微信小程序生成分享海報(bào)方法(附帶二維碼生成)
- 微信小程序?qū)崿F(xiàn)預(yù)約生成二維碼功能
相關(guān)文章
JavaScript 斐波那契數(shù)列 倒序輸出 輸出100以內(nèi)的質(zhì)數(shù)代碼實(shí)例
這篇文章主要介紹了JavaScript 斐波那契數(shù)列 倒序輸出 輸出100以內(nèi)的質(zhì)數(shù)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
通過(guò)js來(lái)制作復(fù)選框的全選和不選效果
這篇文章主要介紹的是通過(guò)js來(lái)制作復(fù)選框的全選和不選效果,需要的朋友可以參考下2014-05-05
JavaScript實(shí)現(xiàn)反轉(zhuǎn)字符串的方法詳解
這篇文章主要介紹了JavaScript實(shí)現(xiàn)反轉(zhuǎn)字符串的方法,結(jié)合實(shí)例形式分析了字符串反轉(zhuǎn)操作,并詳細(xì)講述了相關(guān)函數(shù)的功能與使用注意事項(xiàng),需要的朋友可以參考下2017-04-04
TypeScript新特性之using關(guān)鍵字的使用方法
TypeScript 5.2版本中新添加了using關(guān)鍵字,目前該關(guān)鍵字的提案也進(jìn)入了ECMAScript的Stage 3,也就是說(shuō)很快就會(huì)進(jìn)入JavaScript語(yǔ)言本身中,using和const, let和var一樣都是用于變量聲明的,那么它到底有什么與眾不同的地方呢,本文給大家介紹的非常詳細(xì)2023-11-11
微信小程序?qū)崿F(xiàn)預(yù)約生成二維碼功能
通過(guò)點(diǎn)擊預(yù)約按鈕即可生成二維碼憑碼入校參觀,下面小編通過(guò)實(shí)例代碼講解微信小程序?qū)崿F(xiàn)預(yù)約生成二維碼功能,感興趣的朋友跟隨小編一起看看吧2024-04-04
通過(guò)實(shí)例解析JavaScript for in及for of區(qū)別
這篇文章主要介紹了通過(guò)實(shí)例解析JavaScript for in及for of區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
JS 學(xué)習(xí)總結(jié)之正則表達(dá)式的懶惰性和貪婪性
這篇文章主要介紹了JS 學(xué)習(xí)總結(jié)之正則表達(dá)式的懶惰性和貪婪性的相關(guān)資料,需要的朋友可以參考下2017-07-07
給所有的超級(jí)練級(jí)都加上onmousemove時(shí)間的js代碼
給所有的超級(jí)練級(jí)都加上onmousemove時(shí)間的js代碼...2007-08-08

