微信小程序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 相关文章推荐
JavaScript与DropDownList 区别分析
Jan 01 Javascript
javascript 解决表单仍然提交即使监听处理函数返回false
Mar 14 Javascript
Json字符串转换为JS对象的高效方法实例
May 01 Javascript
微信小程序 数据访问实例详解
Oct 08 Javascript
node.js express中app.param的用法详解
Jul 16 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
Oct 24 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
May 12 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 Javascript
laypage.js分页插件使用方法详解
Jul 27 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
Vue实现兄弟组件间的联动效果
Jan 21 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
Sep 11 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安全性漫谈
2012/06/28 PHP
CURL状态码列表(详细)
2013/06/27 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
小程序转发探索示例
2019/02/19 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
python实现合并两个数组的方法
2015/05/16 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
国家励志奖学金获奖感言
2014/01/09 职场文书
社区两委对照检查材料
2014/08/23 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
Python序列化与反序列化相关知识总结
2021/06/08 Python
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android