• 小程序 获取图片自适应屏幕的尺寸大小


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

    可以直接设置图片裁剪、缩放的模式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     })

    缩放效果:

     

  • 相关阅读:
    从相册中获取图片
    Android中bitmap的相关处理
    Sublime Text的使用代码块安装的模块
    angular之控制器(0)
    13.程序集篇
    12.序列化与反序列篇
    11.泛型篇
    10.集合篇
    9.多态篇
    8.继承篇
  • 原文地址:https://www.cnblogs.com/kybs0/p/13650257.html
Copyright © 2020-2023  润新知