微信小程序image图片加载完成监听


Posted in Javascript onAugust 31, 2019

需求

在应用中显示的图片很多情况不满足业务需求,我们需要动态根据图片的宽高进行缩放或加载中显示的缺省图片,这是我没就需要监听图片加载完成回调,来看看微信小程序怎么实现图片加载完成回调。

实现

1. 绑定回调

通过image标签的bindload属性绑定图片加载完成回调函数,src根据图片加载是否完成绑定是否显示缺省图:

<image src='{{loadComplete?srcImagePath:defaultImagePath}}' bindload="imageLoad"/>

2. 回调监听

在js文件中定一个imageLoad函数,我们就可以通过参数拿到图片加载完成宽高信息:

imgOnLoad(ev) {
  let src = ev.currentTarget.dataset.src,
   width = ev.detail.width,
   height = ev.detail.height
 }

3. 缩放图片

我们写一个工具类,然后调用imageUtil方法对原始图片根据屏幕宽高进行等比例缩放。

function imageUtil(e) {
 var imageSize = {};
 var originalWidth = e.detail.width;//图片原始宽 
 var originalHeight = e.detail.height;//图片原始高 
 var originalScale = originalHeight / originalWidth;//图片高宽比 
 console.log('originalWidth: ' + originalWidth)
 console.log('originalHeight: ' + originalHeight)
 imageSize.imageWidth = originalWidth;
 imageSize.imageHeight = originalHeight;
 //获取屏幕宽高 
 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;
   }
   imageSize.imageWidth = windowWidth;
   imageSize.imageHeight = windowHeight;
  }
 })
 console.log('缩放后的宽: ' + imageSize.imageWidth)
 console.log('缩放后的高: ' + imageSize.imageHeight)
 return imageSize;
}

4. 修改image宽高

通过imageUtil获取到目标宽高后,this.setData({width:imageUtil(e).width, height:imageUtil(e).height}) 即可以动态修改图片宽高了(e是imageLoad方法中的参数):

<image src='{{loadComplete?srcImagePath:defaultImagePath}}' bindload="imageLoad" style='width:width;height:height'/>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jQuery制作迷你背词汇工具
Jul 27 Javascript
jquery中对表单的基本操作代码
Jul 29 Javascript
Script的加载方法小结
Jan 12 Javascript
基于jQuery的Tab选项框效果代码(插件)
Mar 01 Javascript
学习JavaScript的最佳方法分享
Oct 21 Javascript
JavaScript数据结构和算法之二叉树详解
Feb 11 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
Aug 06 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
Jun 17 Javascript
基于Vue实现后台系统权限控制的示例代码
Aug 29 Javascript
原生JS实现简单的倒计时功能示例
Aug 30 Javascript
Vue 实现输入框新增搜索历史记录功能
Oct 15 Javascript
JS三级联动代码格式实例详解
Dec 30 Javascript
JS实现使用POST方式发送请求
Aug 30 #Javascript
node.js处理前端提交的GET请求
Aug 30 #Javascript
Node.js系列之连接DB的方法(3)
Aug 30 #Javascript
Node.js系列之发起get/post请求(2)
Aug 30 #Javascript
Node.js系列之安装配置与基本使用(1)
Aug 30 #Javascript
微信小程序实现写入读取缓存详解
Aug 30 #Javascript
VUE 自定义组件模板的方法详解
Aug 30 #Javascript
You might like
php 强制下载文件实现代码
2013/10/28 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
详细讲解vue2+vuex+axios
2017/05/27 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
Python中的True,False条件判断实例分析
2015/01/12 Python
用Python实现一个简单的线程池
2015/04/07 Python
python获取文件扩展名的方法
2015/07/06 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
麦当劳辞职信范文
2014/01/18 职场文书
读群众路线心得体会
2014/03/07 职场文书
学习演讲稿范文
2014/05/10 职场文书
大学生赌博检讨书
2014/09/22 职场文书
2016中秋节广告语
2016/01/28 职场文书
Python测试框架pytest高阶用法全面详解
2022/06/01 Python