微信小程序开发 图片等比例缩放

1.pic.wxml

<image style="width: {{imagewidth}}px; height: {{imageheight}}px;"  src="{{img_url}}" bindload="imageLoad"></image> 

2.pic.js

// pages/userCenter/pages/pic/pic.js
var util = require('../../../../utils/util.js');

Page({

  /**
   * 页面的初始数据
   */
  data: {
    img_url:"",
    imagewidth: 0,//缩放后的宽  
    imageheight: 0,//缩放后的高  
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let url = options.img_url;
    this.setData({
      'img_url': url
    })
  },
  getCanvasData:function(){ //根据图片绘制画布
    const ctx = wx.createCanvasContext('myCanvas'); 
    ctx.drawImage(this.data.img_url, 0, 0, this.data.imagewidth, this.data.imageheight)
    ctx.draw();
  },
  imageLoad: function (e) { //按屏幕缩放图片
    var imageSize = util.imageUtil(e);
    this.setData({
      imagewidth: imageSize.imageWidth,
      imageheight: imageSize.imageHeight
    })
    this.getCanvasData();//绘制画布
  } 
})

3.util.js

function imageUtil(e) {
  var imageSize = {};
  var originalWidth = e.detail.width;//图片原始宽  
  var originalHeight = e.detail.height;//图片原始高  
  var originalScale = originalHeight / originalWidth;//图片高宽比  
  //获取屏幕宽高  
  wx.getSystemInfo({
    success: function (res) {
      var windowWidth = res.windowWidth;
      var windowHeight = res.windowHeight;
      var windowscale = windowHeight / windowWidth;//屏幕高宽比  
      if (originalScale < windowscale) {//图片高宽比小于屏幕高宽比  
        //图片缩放后的宽为屏幕宽  
        imageSize.imageWidth = windowWidth;
        imageSize.imageHeight = (windowWidth * originalHeight) / originalWidth;
      } else {//图片高宽比大于屏幕高宽比  
        //图片缩放后的高为屏幕高  
        imageSize.imageHeight = windowHeight;
        imageSize.imageWidth = (windowHeight * originalWidth) / originalHeight;
      }

    }
  })
  console.log('缩放后的宽: ' + imageSize.imageWidth)
  console.log('缩放后的高: ' + imageSize.imageHeight)
  return imageSize;
}

module.exports = {
  imageUtil: imageUtil
}  

猜你喜欢

转载自blog.csdn.net/qy_0626/article/details/80076050