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


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 01 Javascript
Javascript 类与静态类的实现
Apr 01 Javascript
node.js实现多图片上传实例
Jun 03 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
Aug 27 Javascript
c#+jquery实现获取radio和checkbox的值
Sep 12 Javascript
node.js中的console.warn方法使用说明
Dec 09 Javascript
APP中javascript+css3实现下拉刷新效果
Jan 27 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
Jan 01 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
Aug 08 Javascript
详解Vue 如何监听Array的变化
Jun 06 Javascript
Vue中点击active并第一个默认选中功能的实现
Feb 24 Javascript
原生js实现贪吃蛇游戏
Oct 26 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
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
PHP学习笔记之session
2018/05/06 PHP
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
python单线程实现多个定时器示例
2014/03/30 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
python实现大转盘抽奖效果
2019/01/22 Python
wxPython多个窗口的基本结构
2019/11/19 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
Python中logging日志库实例详解
2020/02/19 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
世界汽车零件:World Car Parts
2019/09/04 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
总经理助理的八要求
2013/11/12 职场文书
机关门卫岗位职责
2013/12/30 职场文书
小学生元旦广播稿
2014/02/21 职场文书
领导班子四风对照检查材料范文
2014/09/27 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
小学教师岗位职责
2015/04/02 职场文书
获奖感言范文
2015/07/31 职场文书
2019年入党思想汇报
2019/03/25 职场文书
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android