zoukankan      html  css  js  c++  java
  • 小程序 获取图片自适应屏幕的尺寸大小

    图片按比例填充容器,不需要获取详细的图片大小。

    可以直接设置图片裁剪、缩放的模式mode=aspectFit

    而某些场景,比如画布上绘制图片,需要获取保持纵横比自适应的图片大小~

    直接上代码,方便大家copy~

     1     getImageScaleSize = async (imagePath) => {
     2         var imageSizeInfo = {  0, height: 0 };
     3 
     4         //原始宽高
     5         var imageInfo = await Taro.getImageInfo({
     6             src: imagePath
     7         });
     8         var originalWidth = imageInfo.width;
     9         var originalHeight = imageInfo.height;
    10         var originalScale = originalHeight / originalWidth;
    11         console.log('originalWidth: ' + originalWidth + ',originalHeight: ' + originalHeight + ',originalScale: ' + originalScale);
    12 
    13         //屏幕宽高
    14         var systemInfo = Taro.getSystemInfoSync();
    15         var windowWidth = systemInfo.windowWidth;
    16         var windowHeight = systemInfo.windowHeight;
    17         var windowscale = windowHeight / windowWidth;
    18         console.log('windowWidth: ' + windowWidth + ',windowHeight: ' + windowHeight + ',windowscale: ' + windowscale);
    19 
    20         if (originalScale < windowscale) {
    21             //图片高宽比小于屏幕高宽比
    22             //图片缩放后的宽为屏幕宽
    23             imageSizeInfo.width = windowWidth;
    24             imageSizeInfo.height = (windowWidth * originalHeight) / originalWidth;
    25         } else {
    26             //图片高宽比大于屏幕高宽比
    27             //图片缩放后的高为屏幕高
    28             imageSizeInfo.height = windowHeight;
    29             imageSizeInfo.width = (windowHeight * originalWidth) / originalHeight;
    30         }
    31         console.log('缩放后的宽: ' + imageSizeInfo.width + '缩放后的高: ' + imageSizeInfo.height + ',windowscale: ' + windowscale);
    32         return imageSizeInfo;
    33     }

    注:如果是用原生微信框架,将Taro换成wx就行。

    如是容器内添加图片,可以通过wx.createSelectorQuery()获取容器的宽高,再对图片添加缩放处理。

    1     const query = wx.createSelectorQuery()
    2     query.select('.body').boundingClientRect()
    3     query.selectViewport().scrollOffset()
    4     query.exec(async (res) => {
    5         var containerWidth = res[0].width;
    6         var containerHeight = res[0].height;
    7     })

    缩放效果:

     

  • 相关阅读:
    FZU 2150 Fire Game
    POJ 3414 Pots
    POJ 3087 Shuffle'm Up
    POJ 3126 Prime Path
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    字符数组
    HDU 1238 Substing
    欧几里德和扩展欧几里德详解 以及例题CodeForces 7C
    Codeforces 591B Rebranding
  • 原文地址:https://www.cnblogs.com/kybs0/p/13650257.html
Copyright © 2011-2022 走看看