zoukankan      html  css  js  c++  java
  • 微信小程序学习点滴《十二》:图片等比例缩放 获取屏幕尺寸图片尺寸 自适应

    原文: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=" {{imagewidth}}px; height: {{imageheight}}px;" src="{{imagefirstsrc}}" bindload="imageLoad"></image>
    4. <!--图片高大于屏幕高-->
    5. <!--<image style=" {{imagewidth}}px; height: {{imageheight}}px;" src="{{imagesecondsrc}}" bindload="imageLoad"></image>-->
    6. <!--图片宽高大于屏幕宽高-->
    7. <!--<image style=" {{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. }
  • 相关阅读:
    QT:浮动的饼状统计图(自绘不规则窗口)
    在QTableView中使用各种自定义委托
    QT:使用“状态模式”绘制界面
    Linux IO控制命令生成
    C++ new和delete实现原理——new和delete最终调用malloc和free
    Qt中如何 编写插件 加载插件 卸载插件
    QT:用QSet储存自定义结构体的问题——QSet和STL的set是有本质区别的,QSet是基于哈希算法的,要求提供自定义==和qHash函数
    两种方法:VS2008下C++窗体程序显示控制台的方法——在QT程序中使用cout和cin
    把自定义控件集成到Qt Designer中
    关闭Windows 2008下面应用程序出错后的提示
  • 原文地址:https://www.cnblogs.com/onetwo/p/6659226.html
Copyright © 2011-2022 走看看