微信小程序 图片等比例缩放(图片自适应屏幕)


Posted in Javascript onNovember 16, 2016

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

早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于屏幕宽.我之前在做Android的时候也会遇到图片等比例缩放的问题.应该是用图片宽高比和屏幕宽高比做判断.做个笔记.

老规矩,先上图.

1.图片高宽比小于屏幕高宽比

微信小程序 图片等比例缩放(图片自适应屏幕)

2.图片高宽比大于屏幕高宽比

微信小程序 图片等比例缩放(图片自适应屏幕)

3.这种其实也是图片高宽比小于屏幕高宽比,但是高宽都大于屏幕高宽.所以不能简单用高宽来判断,应该是用高宽比判断后做缩放.

微信小程序 图片等比例缩放(图片自适应屏幕)

上代码:

1.index.wxml

<!--index.wxml--> 
<!--图片宽大于屏幕宽--> 
<image style="width: {{imagewidth}}px; height: {{imageheight}}px;" src="{{imagefirstsrc}}" bindload="imageLoad"></image> 
<!--图片高大于屏幕高--> 
<!--<image style="width: {{imagewidth}}px; height: {{imageheight}}px;" src="{{imagesecondsrc}}" bindload="imageLoad"></image>--> 
<!--图片宽高大于屏幕宽高--> 
<!--<image style="width: {{imagewidth}}px; height: {{imageheight}}px;" src="{{imagethirdsrc}}" bindload="imageLoad"></image>-->

2.index.js

//index.js 
//获取应用实例 
var imageUtil = require('../../utils/util.js'); 
var app = getApp() 
Page({ 
 data: { 
  imagefirstsrc: 'http://bpic.588ku.com/back_pic/00/03/85/1656205138bbe2d.png',//图片链接 
  imagesecondsrc: 'http://bpic.588ku.com/back_pic/04/07/63/28581203949ca9d.jpg!/fw/400/quality/90/unsharp/true/compress/true',//图片链接 
  imagethirdsrc:'http://img1.gtimg.com/ent/pics/hv1/13/71/2061/134034643.jpg', 
  imagewidth: 0,//缩放后的宽 
  imageheight: 0,//缩放后的高 
 
 }, 
 onLoad: function () { 
 }, 
 imageLoad: function (e) { 
  var imageSize = imageUtil.imageUtil(e) 
  this.setData({ 
   imagewidth: imageSize.imageWidth, 
   imageheight: imageSize.imageHeight 
  }) 
 } 
})

3.util.js

//util.js 
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) 
 //获取屏幕宽高 
 wx.getSystemInfo({ 
  success: function (res) { 
   var windowWidth = res.windowWidth; 
   var windowHeight = res.windowHeight; 
   var windowscale = windowHeight/windowWidth;//屏幕高宽比 
   console.log('windowWidth: ' + windowWidth) 
   console.log('windowHeight: ' + windowHeight) 
   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 
}
Javascript 相关文章推荐
msn上的tab功能Firefox对childNodes处理的一个BUG
Jan 21 Javascript
js中更短的 Array 类型转换
Oct 30 Javascript
瀑布流布局并自动加载实现代码
Mar 12 Javascript
css transform 3D幻灯片特效实现步骤解读
Mar 27 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
Mar 29 Javascript
javascript刷新父页面的各种方法汇总
Sep 03 Javascript
限制上传文件大小和格式的jQuery插件实例
Jan 24 Javascript
javascript基本数据类型及类型检测常用方法小结
Dec 14 Javascript
ES6扩展运算符的用途实例详解
Aug 20 Javascript
jquery的$().each和$.each的区别
Jan 18 jQuery
详解vue中router-link标签所必备了解的属性
Apr 15 Javascript
微信小程序Echarts覆盖正常组件问题解决
Jul 13 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 #Javascript
微信小程序 实现拖拽事件监听实例详解
Nov 16 #Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
Nov 16 #Javascript
JavaScript仿微博发布信息案例
Nov 16 #Javascript
使用Node.js给图片加水印的方法
Nov 15 #Javascript
Node.js批量给图片加水印的方法
Nov 15 #Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
Nov 15 #Javascript
You might like
php下实现折线图效果的代码
2007/04/28 PHP
PHP 批量删除数据的方法分析
2009/10/30 PHP
php防攻击代码升级版
2010/12/29 PHP
php学习之function的用法
2012/07/14 PHP
深入PHP运行环境配置的详解
2013/06/04 PHP
php函数连续调用实例分析
2015/07/30 PHP
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
树结构之JavaScript
2017/01/24 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
详解使用VueJS开发项目中的兼容问题
2018/08/02 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
Django设置Postgresql的操作
2020/05/14 Python
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
广告学专业应届生求职信
2013/10/01 职场文书
初中生学习的自我评价
2013/11/14 职场文书
大学毕业后的十年规划
2014/01/07 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
护理医院见习报告
2014/11/03 职场文书
体育教师研修感悟
2015/11/18 职场文书