亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

微信小程序使用canvas自適應屏幕畫海報并保存圖片功能

2019-11-19 11:08:06
字體:
來源:轉載
供稿:網友

小程序canvas的API并沒有像其他的一樣支持小程序獨有的 rpx 自適應尺寸單位,在繪制內容時所應用的單位仍然是 px,那么如何實現不同尺寸屏幕的自適應呢?

我們的在開發中常用的參考屏幕尺寸(iPhone6)為:375*667;

那么想要適應其他尺寸的屏幕時只需按照iPhone6的繪制大小按比例進行換算即可:

獲取系統屏幕尺寸

先利用wx.getSystemInfo (獲取系統信息)的API獲取屏幕寬度,然后除iPhone6的屏幕寬度,即可得到相對單位

// 在onLoad中調用const that = thiswx.getSystemInfo({ success: function (res) {  console.log(res)  that.setData({   model: res.model,   screen_width: res.windowWidth/375,   screen_height: res.windowHeight  }) }})

在繪制方法中將參數乘以相對單位即可實現自適應

這里的rpx是相對不同屏幕寬度的相對單位,測量出得實際寬度,就是實際測出的px像素值*rpx就可以了;之后無論實在iPhone5,iPhone6,iPhone7...都可以進行自適應。

這里的html也要動態的設置寬和高

<canvas canvas-id="PosterCanvas" style="width:{{screen_width*375+'px'}}; height:{{screen_height*1.21+'px'}}"></canvas>drawPoster(){  let ctx = wx.createCanvasContext('PosterCanvas'),that=this.data;  console.log('手機型號' + that.model,'寬'+that.screen_width*375,'高'+ that.screen_height)  let rpx = that.screen_width  //這里的rpx是相對不同屏幕寬度的相對單位,實際的寬度測量,就是實際測出的px像素值*rpx就可以了;之后無論實在iPhone5,iPhone6,iPhone7...都可以進行自適應。  ctx.setFillStyle('#1A1A1A')  ctx.fillRect(0, 0, rpx * 375, that.screen_height * 1.21)  ctx.fillStyle = "#E8CDAA";  ctx.setFontSize(29*rpx)  ctx.font = 'normal 400 Source Han Sans CN';  ctx.fillText('Hi 朋友', 133*rpx,66*rpx)  ctx.fillText('先領禮品再買車', 84*rpx, 119*rpx)  ctx.drawImage('../../img/sell_index5.png', 26*rpx, 185*rpx, 324*rpx, 314*rpx)  ctx.drawImage('../../img/post_car2x.png', 66 * rpx, 222 * rpx, 243 * rpx, 145 * rpx)  ctx.setFontSize(16*rpx)  ctx.font = 'normal 400 Source Han Sans CN';  ctx.fillText('長按掃描獲取更多優惠', 108*rpx, 545*rpx)  ctx.drawImage('../../img/code_icon2x.png', 68 * rpx, 575 * rpx, 79 * rpx, 79 * rpx)  ctx.drawImage('../../img/code2_icon2x.png', 229 * rpx, 575 * rpx, 79 * rpx, 79 * rpx)  ctx.setStrokeStyle('#666666')  ctx.setLineWidth(1*rpx)  ctx.lineTo(187*rpx,602*rpx)  ctx.lineTo(187*rpx, 630*rpx)  ctx.stroke()  ctx.fillStyle = "#fff"  ctx.setFontSize(13 * rpx)  ctx.fillText('xxx科技汽車銷售公司', 119 * rpx, 663 * rpx)  ctx.fillStyle = "#666666"  ctx.fillText('朝陽區?望京xxx科技大廈', 109 * rpx, 689 * rpx)  ctx.setFillStyle('#fff')  ctx.draw() },

保存到相冊

很簡單就是在畫完圖片之后的draw回調函數里調用canvasToTempFilePath()生產一個零時內存里的鏈接,然后在調用saveImageToPhotosAlbum()就可以了;其中牽扯到授權,如果你第一次拒絕了授權,你第二次進入的時候在iphone手機上是不會再次提醒你授權的,這時就需要你手動調用了;以下附上代碼!

ctx.draw(true, ()=>{    // console.log('畫完了')    wx.canvasToTempFilePath()({     x: 0,     y: 0,     width: rpx * 375,     height: that.screen_height * 1.21,     canvasId: 'PosterCanvas',     success: function (res) {      // console.log(res.tempFilePath);      wx.saveImageToPhotosAlbum({       filePath: res.tempFilePath,       success: (res) => {        console.log(res)       },       fail: (err) => { }      })     }    })    })

拒絕授權后再次提醒授權的代碼

mpvue.saveImageToPhotosAlbum({    filePath: __path,    success(res) {     mpvue.showToast({     title: '保存成功',     icon: 'success',     duration: 800,     mask:true     });     },    fail(res) {      if (res.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || res.errMsg === "saveImageToPhotosAlbum:fail auth deny" || res.errMsg === "saveImageToPhotosAlbum:fail authorize no response") {     mpvue.showModal({        title: '提示',        content: '需要您授權保存相冊',        showCancel: false,        success:modalSuccess=>{         mpvue.openSetting({          success(settingdata) {           // console.log("settingdata", settingdata)           if (settingdata.authSetting['scope.writePhotosAlbum']) {            mpvue.showModal({             title: '提示',             content: '獲取權限成功,再次點擊圖片即可保存',             showCancel: false,            })           } else {            mpvue.showModal({             title: '提示',             content: '獲取權限失敗,將無法保存到相冊哦~',             showCancel: false,            })           }          },          fail(failData) {           console.log("failData",failData)          },          complete(finishData) {           console.log("finishData", finishData)          }         })        }       })     }     }   });

總結

以上所述是小編給大家介紹的微信小程序使用canvas自適應屏幕畫海報并保存圖片功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人网址在线观看| 欧美成人精品激情在线观看| 日韩中文字幕不卡视频| 久久久久久久久久国产| 国产精品女人网站| 国产网站欧美日韩免费精品在线观看| 亚洲欧美日韩视频一区| 国产一区二区美女视频| 国产极品jizzhd欧美| 亚洲欧美综合另类中字| 国产在线播放不卡| 久久69精品久久久久久久电影好| 欧美精品制服第一页| 久久精品99久久香蕉国产色戒| 91亚洲永久免费精品| 久久久久久999| 午夜伦理精品一区| 日韩欧美精品在线观看| 情事1991在线| 久久精品小视频| 国产精品成人av在线| 亚洲一区二区三区sesese| 亚洲aⅴ日韩av电影在线观看| 韩国三级电影久久久久久| 国产成人在线播放| 国语自产精品视频在线看一大j8| 欧美国产精品va在线观看| 色先锋久久影院av| 国产欧美精品在线| 在线视频日韩精品| 一区二区三区国产视频| 国产香蕉精品视频一区二区三区| 国产精品成人一区二区| 国语自产精品视频在线看| 国产精品久久国产精品99gif| 97在线观看视频国产| 91久久精品视频| 国产精品草莓在线免费观看| 美女精品久久久| xxxx欧美18另类的高清| 4438全国成人免费| 亚洲精品福利在线| 亚洲xxxx妇黄裸体| 国产一区深夜福利| 日本一区二区在线播放| 日韩毛片在线观看| 午夜精品国产精品大乳美女| 欧美精品videosex极品1| 国产精品扒开腿做爽爽爽男男| 色中色综合影院手机版在线观看| 久久国内精品一国内精品| 国产精品久久二区| 亚洲欧美www| 亚洲国产小视频在线观看| 黑丝美女久久久| 按摩亚洲人久久| 亚洲男人的天堂在线| 日本亚洲欧美成人| 久久影视免费观看| 色爱精品视频一区| 国产日韩欧美在线播放| 中文字幕av日韩| 98精品国产自产在线观看| 日韩精品高清在线| 国产精品18久久久久久麻辣| 日本久久久久久久久久久| 精品国产欧美成人夜夜嗨| 亚洲黄在线观看| 国产成人精品999| 2019最新中文字幕| 国产精品国产亚洲伊人久久| 中文欧美日本在线资源| 欧洲美女7788成人免费视频| 国产福利精品在线| 亚洲精品v欧美精品v日韩精品| 日韩亚洲欧美中文高清在线| 黑人极品videos精品欧美裸| 亚洲精品白浆高清久久久久久| 亚洲欧美国产一区二区三区| 51视频国产精品一区二区| 国产精品国产福利国产秒拍| 久久乐国产精品| 欧美日韩美女视频| 国产精品影片在线观看| 欧美午夜女人视频在线| 久久精品电影网| 日本在线观看天堂男亚洲| 精品精品国产国产自在线| 亚洲精选一区二区| 亚洲国产女人aaa毛片在线| 日韩视频免费看| 精品视频中文字幕| 亚洲精品乱码久久久久久按摩观| 日韩欧美国产激情| 国产精品国内视频| 日韩av影院在线观看| 欧美性猛交xxxxx免费看| 久久久久免费精品国产| 97超级碰在线看视频免费在线看| 精品久久久久久久久国产字幕| 国产免费亚洲高清| 欧美久久精品一级黑人c片| 亚洲第一视频网| 一区二区欧美久久| 国产成人亚洲综合| 伊人av综合网| 亚洲午夜av电影| 国内伊人久久久久久网站视频| 久久久久久国产精品三级玉女聊斋| 日本久久久久亚洲中字幕| 国产一区二区日韩精品欧美精品| 国产欧美在线视频| 国产性猛交xxxx免费看久久| 国产精品99久久久久久白浆小说| 国产亚洲视频中文字幕视频| 日本免费久久高清视频| 色悠久久久久综合先锋影音下载| 97视频在线观看成人| 宅男66日本亚洲欧美视频| 91九色国产社区在线观看| 国产精品自产拍在线观看中文| 欧美三级免费观看| 亚洲精品www久久久久久广东| 亚洲色图偷窥自拍| 久久国产加勒比精品无码| 国产精品一香蕉国产线看观看| 黑丝美女久久久| 亚洲成年人在线| 91久久国产综合久久91精品网站| 久久伊人91精品综合网站| 性欧美xxxx视频在线观看| 国产精品久久久久久婷婷天堂| 国产精品91在线观看| 久久久久久伊人| 欧美—级高清免费播放| 97香蕉超级碰碰久久免费的优势| 亚洲性猛交xxxxwww| 亚洲第一免费播放区| 日韩欧美成人免费视频| 国产精品第3页| 国产精品久久国产精品99gif| 深夜福利亚洲导航| 欧美丰满少妇xxxxx| 欧美在线影院在线视频| 中文字幕日韩在线观看| 中文字幕在线看视频国产欧美在线看完整| 成人国产精品一区| 欧美一级片久久久久久久| 日韩精品中文字幕视频在线| 亚洲另类图片色| 乱亲女秽乱长久久久| 91精品国产高清自在线| 日韩精品在线播放| 亚洲精品在线91| 久久精品视频网站| 久久久亚洲国产| 久久精品国产99国产精品澳门| 亚洲精品成人av| 国产精品91免费在线| 性欧美暴力猛交69hd| 国产在线999| 日韩精品小视频| 亚洲成人教育av| 日韩精品福利网站|