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


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 函数惰性载入的实现及其优点介绍
Aug 12 Javascript
js设置控件的隐藏与显示的两种方法
Aug 21 Javascript
Angular ng-class详解及实例代码
Sep 19 Javascript
PHP抓取HTTPS内容和错误处理的方法
Sep 30 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
BootStrap 表单控件之单选按钮水平排列
May 23 Javascript
获取url中用&amp;隔开的参数实例(分享)
May 28 Javascript
Nginx 配置多站点vhost 的方法
Jan 07 Javascript
JavaScript实现计算多边形质心的方法示例
Jan 31 Javascript
vue实现tab切换外加样式切换方法
Mar 16 Javascript
微信小程序实现多个按钮的颜色状态转换
Feb 15 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
Jul 28 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/01/18 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
javascript学习网址备忘
2007/05/29 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
python 网络爬虫初级实现代码
2016/02/27 Python
简单易懂的python环境安装教程
2017/07/13 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
python读写配置文件操作示例
2019/07/03 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
python文件及目录操作代码汇总
2020/07/08 Python
pytorch学习教程之自定义数据集
2020/11/10 Python
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
几个人围成一圈的问题
2013/09/26 面试题
WSDL的操作类型主要有几种
2013/07/19 面试题
数控专业毕业生自荐信范文
2014/03/04 职场文书
工程承诺书怎么写
2014/05/24 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
庆祝教师节标语
2014/10/09 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
2014年小学工作总结
2014/11/26 职场文书
党纪处分决定书
2015/06/24 职场文书