国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 熱點 > 微信 > 正文

微信小程序canvas.drawImage完全顯示圖片問題的解決

2024-07-22 01:17:22
字體:
來源:轉載
供稿:網友

問題描述

問題產生

對于微信小程序,canvas處理過程中,dramImage默認圖片引用是有殘缺的

導入初始項目

打開鏈接(原官網例子),瀏覽器喚醒微信開發這工具,打開連接之前需要下載好微信開發者工具,如已安裝則直接喚起,沒有則會提示下載

目的

通過對canvas繪圖過程的修改,或者其樣式的修改,達到完全顯示,并自適應不同機型的目的

解決方案

準備工作

 Page({ data:{  imgSrc: '', // 需要處理圖片地址  imgW: '', // canvas 寬度  imgH: '', // canvas 高度  byclear: 1 // 比例,這里將iphon6- 375像素設置為1標準,以便在自適應上的轉換 }, onReady() { var that = this // 根據屏幕的寬度計算標準比例值。這里講375作為標準值 wx.getSystemInfo({  success: function(res) {  let byclear = res.screenWidth / 375  that.setData({   byclear  })  }, }) }, openAndDraw() { // 選擇圖片 var that = this wx.chooseImage({  success: (res) => {  that.setData({   imgSrc: res.tempFilePaths[0],   res  })  } }) }, checkwh(e) { // 處理邏輯 } })

獲取選擇目標圖片的寬高度~

默認canvas 是無法獲取圖片的高度的,再者小程序里面沒有 new Image()這個方法,只能通過標簽組件image間接獲取,所以我們需要在wxml中插入一個隱藏的標簽image,隱藏方法我們設置display:none 或者hidden就可以了,注意不要wx:if, wx:if 不會觸發bindload事件。

<image src="{{imgSrc}}" bindload='checkwh' mode='widthFix' hidden/><canvas canvas-id="canvasIn" class="canvas"></canvas>

在方法checkwh里面即可獲取到圖片寬高

 checkwh(e){  // 實際寬度 e.detail.width 高度 e.detail.height  let whsrc = e.detail.height / e.detail.width  // 計算高寬,需要處理圖片寬度小于屏幕寬度的時候 對應的canvas比例   }

canvas.scale 方案

dramImage 繪圖方法,我們可以通過對畫布的放大縮小scale來完整繪制,繼續在checkwh中進行處理.scale縮放比例很簡單,我們只要計算出屏幕與圖片的實際比例,對應縮小就可。即:375 * byclear / e.detail.width 這里要帶上自適應比例,當然對于圖片寬度小于屏幕的我們不做縮放處理

 checkwh(e){  // 實際寬度 e.detail.width 高度 e.detail.height let whsrc = e.detail.height / e.detail.width  // 計算高寬,需要處理圖片寬度大于屏幕寬度的時候 對應的canvas比例 let res = this.data.res  let byclear = this.data.byclear const ctx = wx.createCanvasContext('canvasIn', this); // 對畫布進行縮放,注意scale兩個參數保持一致,即縮放比例都是一樣的。保證寬高比一致 if (e.detail.width > 375 * byclear) ctx.scale(375 * byclear / e.detail.width, 375 * byclear / e.detail.width); ctx.drawImage(res.tempFilePaths[0], 0, 0, e.detail.width, e.detail.height) ctx.draw() // 后續操作 }            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泸西县| 和政县| 东丽区| 山东| 新民市| 余江县| 延庆县| 甘洛县| 龙海市| 蒲江县| 库尔勒市| 乐平市| 镇沅| 克东县| 南丹县| 日喀则市| 巴林右旗| 区。| 灵寿县| 甘南县| 桑日县| 潞西市| 扎囊县| 汉川市| 舞钢市| 庆阳市| 汤原县| 柳州市| 新绛县| 庆云县| 离岛区| 师宗县| 屯门区| 兴文县| 和龙市| 缙云县| 横峰县| 色达县| 新沂市| 丘北县| 黄梅县|