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


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 相关文章推荐
Javascript 对象的解释
Nov 24 Javascript
js 提交和设置表单的值
Dec 19 Javascript
javascript 三种编解码方式
Feb 01 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
Feb 26 Javascript
jquery的flexigrid无法显示数据提示获取到数据
Jul 19 Javascript
js字母大小写转换实现方法总结
Nov 13 Javascript
jquery showModelDialog的使用方法示例详解
Nov 19 Javascript
window resize和scroll事件的基本优化思路
Apr 29 Javascript
构造函数+原型模式构造js自定义对象(最通用)
May 12 Javascript
全面兼容的javascript时间格式化函数(比较实用)
May 14 Javascript
微信小程序 前端源码逻辑和工作流详解
Oct 08 Javascript
React中的refs的使用教程
Feb 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
Laravel 5框架学习之表单
2015/04/08 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
[01:16]2014DOTA2 TI专访C9战队EE:中国五强中会占三席
2014/07/10 DOTA
简单的通用表达式求10乘阶示例
2014/03/03 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
Python 如何批量更新已安装的库
2020/05/26 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
.NET程序员的几道面试题
2012/06/01 面试题
执行力心得体会
2013/12/31 职场文书
教师绩效工资方案
2014/02/01 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
宣传口号大全
2014/06/16 职场文书
2014年安全保卫工作总结
2014/11/13 职场文书
2014年团队工作总结
2014/11/24 职场文书
2014年环保工作总结
2014/11/26 职场文书
大学生就业意向书
2015/05/11 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js