原文:http://www.wxapp-union.com/portal.php?mod=view&aid=360

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

老规矩,先上图.

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

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

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

上代码:

1.index.wxml

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

2.index.js

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

3.util.js

    1. //util.js
    2. function imageUtil(e) {
    3. var imageSize = {};
    4. var originalWidth = e.detail.width;//图片原始宽
    5. var originalHeight = e.detail.height;//图片原始高
    6. var originalScale = originalHeight/originalWidth;//图片高宽比
    7. console.log('originalWidth: ' + originalWidth)
    8. console.log('originalHeight: ' + originalHeight)
    9. //获取屏幕宽高
    10. wx.getSystemInfo({
    11. success: function (res) {
    12. var windowWidth = res.windowWidth;
    13. var windowHeight = res.windowHeight;
    14. var windowscale = windowHeight/windowWidth;//屏幕高宽比
    15. console.log('windowWidth: ' + windowWidth)
    16. console.log('windowHeight: ' + windowHeight)
    17. if(originalScale < windowscale){//图片高宽比小于屏幕高宽比
    18. //图片缩放后的宽为屏幕宽
    19. imageSize.imageWidth = windowWidth;
    20. imageSize.imageHeight = (windowWidth * originalHeight) / originalWidth;
    21. }else{//图片高宽比大于屏幕高宽比
    22. //图片缩放后的高为屏幕高
    23. imageSize.imageHeight = windowHeight;
    24. imageSize.imageWidth = (windowHeight * originalWidth) / originalHeight;
    25. }
    26. }
    27. })
    28. console.log('缩放后的宽: ' + imageSize.imageWidth)
    29. console.log('缩放后的高: ' + imageSize.imageHeight)
    30. return imageSize;
    31. }
    32. module.exports = {
    33. imageUtil: imageUtil
    34. }

微信小程序学习点滴《十二》:图片等比例缩放 获取屏幕尺寸图片尺寸 自适应的更多相关文章

  1. 微信小程序把玩(十二)text组件

    原文:微信小程序把玩(十二)text组件 通常文本设置要不在wxml中设置,再要不就是通过weml绑定在js中设置文字. wxml <view > <text>我是文本组件&l ...

  2. 微信小程序学习笔记(二)--框架-全局及页面配置

    描述和功能 框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑. 响应的数 ...

  3. 【转】微信小程序开发之图片等比例缩放 获取屏幕尺寸图片尺寸 自适应

    原文[https://blog.csdn.net/qq_31383345/article/details/53127804] 早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于 ...

  4. 微信小程序开发(十二)Promise将异步改为同步

    // utils/utils.js /** * requestPromise用于将wx.request改写成Promise方式 * @param:{string} myUrl 接口地址 * @retu ...

  5. 微信小程序开发之图片等比例缩放 获取屏幕尺寸图片尺寸 自适应

    wxml: <image style="width: {{imagewidth}}px; height: {{imageheight}}px;"  src="{{i ...

  6. 微信小程序学习笔记二 数据绑定 + 事件绑定

    微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...

  7. 微信小程序学习指南

    作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  8. 微信小程序动态生成保存二维码

    起源:最近小程序需要涉及到一些推广方面的功能,所以要写一个动态生成二维码用户进行下载分享,写完之后受益良多,特此来分享一下: 一.微信小程序动态生成保存二维码 wxml: <view class ...

  9. 微信小程序学习笔记一 小程序介绍 & 前置知识

    微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...

随机推荐

  1. Leetcode-841. 钥匙和房间

    题目 有 N 个房间,开始时你位于 0 号房间.每个房间有不同的号码:0,1,2,...,N-1,并且房间里可能有一些钥匙能使你进入下一个房间. 在形式上,对于每个房间 i 都有一个钥匙列表 room ...

  2. Mysql 高可用方案

    1 mysql分布式数据库,如 mycat https://www.cnblogs.com/zzsdream/articles/6650690.html 2 读写分离,mysql主从复制+mysql ...

  3. 学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

    http://www.cnblogs.com/del/archive/2010/04/16/1713886.html 跳转指令分三类:一.无条件跳转: JMP;二.根据 CX.ECX 寄存器的值跳转: ...

  4. 绝对定位常见误区:position:absolute相对于谁定位、及当溢出时怎么隐藏

    1.绝对定位元素溢出父元素,怎么隐藏问题? 通常,为了让DIV子元素超出部分隐藏,都是在父元素设置overflow:hidden,这样即可防止子元素撑开父元素,使子元素能够溢出隐藏! 但是,对于pos ...

  5. Linux:磁盘挂载

    本来虚拟centos的服务器的磁盘分配的就不大,之前只分配了20G的样子,由于最近有装了不少软件,比如nifi压缩版就有1.2G的大小,一下子没有磁盘资源了.今晚就折腾在这事上了. [root@mas ...

  6. centos:添加用户

    初步进入centos学习,配置用户 1,创建用户 创建用户 hadoop [root@master spark]# useradd hadoop [root@master spark]# 2,创建密码 ...

  7. redis清除数据/xargs使用

    redis清除数据/xargs使用 redis比memcache好的地方之一,如果memcache,恐怕就得关掉重启了. 1 使用cli FLUSHDB 清除一个数据库,FLUSHALL清除整个red ...

  8. ifdef ANDROID总是不好用

    在vs的proprocessor definition中定义了ANDRIOD, 但是执行下面的代码的时候,总是说ANDROID is not defined.     #ifdef ANDROID   ...

  9. ASP.NET MVC提交LIST列表到后台接收不到数据

    兄跌 你看到这篇文章的时候已经找到答案了. 我在解决这个问题的端倪的时候已经浪费了我一个下午的休假时间.所以你应该给我一个赞!!! 不废话了上代码: Entity(Model) [Serializab ...

  10. Auty 2017——WebMonitor接口本地检测平台

    转载:http://www.cnblogs.com/LanTianYou/p/6272484.html#_label0_0 目录 2016Auty诞生 2017一个新的开始 WebMonitor接口本 ...