微信小程序 动态的设置图片的高度和宽度详解及实例代码


Posted in Javascript onFebruary 24, 2017

微信小程序图片等比例缩放 动态的获取图片的高度和宽度 动态的设置图片的高度和宽度

前言:

在小程序布局中,如果图片不是固定高度和高度,但image设置的是固定的高度和宽度,这时候原始图片相对image设置的固定高度和宽度不是等比例大小,那么这张图片就会变形,变的不清晰。这时就可以使用下面的等比例缩放的方式缩放图片,让图片不变形。或者通过image的bindload方法动态的获取图片的高度和宽度,动态的设置图片的高度和宽度,是图片布局的高度和宽度和原始图片的高度和宽度相等。

1.图片等比例缩放工具

//Util.js 
 
class Util{ 
 
  /*** 
   * 按照显示图片的宽等比例缩放得到显示图片的高 
   * @params originalWidth 原始图片的宽 
   * @params originalHeight 原始图片的高 
   * @params imageWidth   显示图片的宽,如果不传就使用屏幕的宽 
   * 返回图片的宽高对象 
  ***/ 
  static imageZoomHeightUtil(originalWidth,originalHeight,imageWidth){ 
    let imageSize = {}; 
    if(imageWidth){ 
      imageSize.imageWidth = imageWidth; 
      imageSize.imageHeight = (imageWidth * originalHeight) / originalWidth; 
    }else{//如果没有传imageWidth,使用屏幕的宽 
      wx.getSystemInfo({  
        success: function (res) {  
          imageWidth = res.windowWidth;  
          imageSize.imageWidth = imageWidth; 
          imageSize.imageHeight = (imageWidth * originalHeight) / originalWidth; 
        }  
      }); 
    } 
    return imageSize; 
  } 
 
  /*** 
   * 按照显示图片的高等比例缩放得到显示图片的宽 
   * @params originalWidth 原始图片的宽 
   * @params originalHeight 原始图片的高 
   * @params imageHeight  显示图片的高,如果不传就使用屏幕的高 
   * 返回图片的宽高对象 
  ***/ 
  static imageZoomWidthUtil(originalWidth,originalHeight,imageHeight){ 
    let imageSize = {}; 
    if(imageHeight){ 
      imageSize.imageWidth = (imageHeight *originalWidth) / originalHeight; 
      imageSize.imageHeight = imageHeight; 
    }else{//如果没有传imageHeight,使用屏幕的高 
      wx.getSystemInfo({  
        success: function (res) {  
          imageHeight = res.windowHeight; 
          imageSize.imageWidth = (imageHeight *originalWidth) / originalHeight; 
          imageSize.imageHeight = imageHeight; 
        }  
      }); 
    } 
    return imageSize; 
  } 
 
} 
 
export default Util;

2.使用image组件加载图片,通过bindload动态的获取图片的高度和宽度,动态的设置图片的高度和宽度   index.wxml  (../pro.png是本地图片)

<image bindload="imageLoad" style="width:{{imageWidth}}px;;height:{{imageHeight}}px;" src="../pro.png"/>

index.js

import Util from '../common/Util'; 
 
Page({ 
 data:{ 
    imageWidth:0, 
    imageHeight:0 
 }, 
 imageLoad: function (e) {  
    //获取图片的原始宽度和高度 
    let originalWidth = e.detail.width; 
    let originalHeight = e.detail.height; 
    //let imageSize = Util.imageZoomHeightUtil(originalWidth,originalHeight); 
 
    //let imageSize = Util.imageZoomHeightUtil(originalWidth,originalHeight,375); 
    let imageSize = Util.imageZoomWidthUtil(originalWidth,originalHeight,145); 
 
    this.setData({imageWidth:imageSize.imageWidth,imageHeight:imageSize.imageHeight});  
 } 
})

微信小程序图片等比例缩放 动态的获取图片的高度和宽度 动态的设置图片的高度和宽度

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
jQuery实现当按下回车键时绑定点击事件
Jan 28 Javascript
jQuery中empty()方法用法实例
Jan 16 Javascript
javascript中undefined与null的区别
Aug 16 Javascript
浅谈JS中逗号运算符的用法
Jun 12 Javascript
Javascript实现图片不间断滚动的代码
Jun 22 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
Sep 21 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
Feb 11 Javascript
JS实现手写parseInt的方法示例
Sep 24 Javascript
node.js部署之启动后台运行forever的方法
May 23 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 jQuery
JavaScript享元模式原理与用法实例详解
Mar 09 Javascript
微信小程序之高德地图多点路线规划过程示例详解
Jan 18 Javascript
微信小程序实现实时圆形进度条的方法示例
Feb 24 #Javascript
JavaScript中三种常见的排序方法
Feb 24 #Javascript
Angular2 Service实现简单音乐播放器服务
Feb 24 #Javascript
Bootstrap3多级下拉菜单
Feb 24 #Javascript
使用原生的javascript来实现轮播图
Feb 24 #Javascript
从零学习node.js之mysql数据库的操作(五)
Feb 24 #Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 #Javascript
You might like
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
PHP5函数小全(分享)
2013/06/06 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
php修改数组键名的方法示例
2017/04/15 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
浅析javascript 定时器
2014/12/23 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
在Python中使用元类的教程
2015/04/28 Python
Python获取任意xml节点值的方法
2015/05/05 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
Python如何测试stdout输出
2020/08/10 Python
python中str内置函数用法总结
2020/12/27 Python
毕业生求职简历的自我评价
2013/10/07 职场文书
趣味比赛活动方案
2014/02/15 职场文书
网络技术专业求职信
2014/05/02 职场文书
销售团队获奖感言
2014/08/14 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
长征观后感
2015/06/09 职场文书
小学主题班会教案
2015/08/17 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书