html微信图片自适应,微信小程序实现图片高度自适应

article/2025/9/15 3:52:46

1. swiper轮播海报通过wx.getSystemInfo接口获取屏幕高度,高度依据图片宽高等比缩放

8b1863bb7e5f93eb1f507e3751db42bc.gif

运行于app.js,全局保存

// 设备信息

wx.getSystemInfo({

success: function(res) {

that.screenWidth = res.windowWidth;

}

});

page前端调用

bannerHeight: Math.ceil(290.0 / 750.0 * getApp().screenWidth)

2. 配合使用wx.getImageInfo(OBJECT)接口来获取图片宽高,结果失败。

这适用于宽高比不一致的图片,比如商品详情图,需要用以上接口适配。

对每个图片都绑定一个高度

js实现获取高度

getDetailImageHeight: function (imagesUrl) {

var that = this;

var detailImagesHeight = [];

for (var i = 0; i < imagesUrl.length; i++) {

// detailImagesHeight[i] = 300 * i;

wx.getImageInfo({

src: imagesUrl[i],

success: function (res) {

detailImagesHeight[i] = res.height;

console.log(res.height);

}

});

}

that.setData({

detailImagesHeight: detailImagesHeight

});

},

这种方式不可靠,网络请求线程不安全,取到的值是会重复与丢失。

5e327c00b11dbeb4ae8611049ba3ea48.png

更要命的是数组不能存入:console.log("detailImagesHeight:" + detailImagesHeight);打印结果为"detailImagesHeight:",数组是空的!

总结:此接口适用于非循环遍历的情况,即针对单一图而不是图组时适用。

d55c48856a0bbaa0d611fd957396a96e.png

3. 使用标签的bindload获取图片高度,结果证明是有效的。

第二种方法失效,只得作罢,去翻看标签的文档

发现还提供了另一个bindload事件,可以从event.detail.height去获取高度。

手动实践下

bindImageLoad: function (e) {

var height = e.detail.height;

console.log(height);

},

发现取到的高度值是可靠的。

b9ed295286cca43418a5f57dbcfcb21e.png

那剩下的来的工作是使用data-index绑定序列,给予填充高度就可以了。

完善下bindImageLoad方法:

bindImageLoad: function (e) {

// 取出当前图片的下标

var index = parseInt(e.currentTarget.dataset.index);

// 先读取本地detailImagesHeight原值

var detailImagesHeight = this.data.detailImagesHeight;

// 相当地存入对应图片的高度,根据图片宽高比与屏幕尺寸换算得出

detailImagesHeight[index] = getApp().screenWidth / (e.detail.width / e.detail.height);

this.setData({

detailImagesHeight: detailImagesHeight

});

},

效果图:

ac50ec7a63d013cd365131008a4fc840.png

4. 使用的mode为widthFix,零js代码解决

这种方式多快好省,推荐这种方式代替上述bindload去e.detail.height的方式。

此接口是2016-12-22微信团队在原先3种缩放方式(scaleToFill、aspectFit、aspectFill)所增加的,它帮我们省去计算的过程,很实用。在原生App开发中,免不了要徒手算,尤其对于iOS只提供了以上3种同时又没有流式布局的平台来说,很是痛苦。

结论:

凡事多看文档,关注更新更不能少,官方能站在前人经验上提供这个widthFix属性,确实是意料之外。

动手实践很重要,有些接口官方暂时没有提供的情况下,还是不少了手动变相实现。

该demo源码已托管到码云:http://git.oschina.net/dotton/lendoo-wx,本文涉及代码存于/pages/index/与/pages/goods/detail文件夹中。

对移动开发有兴趣的朋友可以关注我的公众号【huangxiujie85】与我交流讨论,给我留言或文章评论。


http://chatgpt.dhexx.cn/article/ewa2Tgg1.shtml

相关文章

微信小程序的swiper轮播图中的图片设置自适应高度的一种方法

微信小程序的swiper轮播图中的图片设置自适应高度的一种方法 小程序中的轮播图很简单&#xff0c;但是唯一的缺陷就是 swiper 是固定的150px 高度&#xff08;320px 宽度&#xff09;&#xff0c;这样如果传入的图片大于这个高度就会被隐藏。那么如何让图片自适应不同分辨率是一…

【小程序中image自适应以及默认高度问题】

原因&#xff1a;小程序不知道background-image&#xff0c;本人开发小程序有个头图&#xff0c;根据天气展示不同的头图&#xff0c;要适配各种宽窄不同的屏幕以及Ipad&#xff0c;不能拉伸图片&#xff0c;UI不同意使用渐变&#xff0c;其实使用宽100%完全可以解决&#xff0…

小程序图片高度自适应等问题

小程序图片高度自适应 这里踩了很多遍的坑&#xff0c;花了很多时间&#xff0c;以为像以前以前给他上级的盒子不给高度就行了&#xff0c;oh,no&#xff0c;这是一个坑&#xff0c;关键在于image标签的一个属性&#xff1a;mode"widthFix"&#xff0c;简单搞定 &l…

微信小程序图片高度按照图片真实宽高比自适应

原理&#xff1a;image组件bindload属性 前端在按照设计图定的宽度做好图片的宽高之后&#xff0c;如果图片的原始宽高比对应不上&#xff0c;那么图片就会出现拉伸变形的情况&#xff0c;虽然微信小程序有mode属性可以对图片进行适应&#xff0c;但是会有部分显示不完全或者会…

微信小程序——整个页面的自动适应布局、图片自适应、高度自动占满剩余部分

1、按比例适应布局 大家有没有过一个烦恼&#xff0c;就是让某个view的高度或者宽度扩大点&#xff0c;而且是要按比例适应不同的手机&#xff0c;遇到这类问题应该怎么办&#xff1f; 下面就为大家讲解怎么做一个能够自动适应不同手机的布局 1、像素单位 rpx 首先&#xff…

用arcgis裁剪面时出错,ERROR 999999: 执行函数时出错

转载地址&#xff1a;http://blog.sina.com.cn/s/blog_712f5b3b0101frfj.html 方法&#xff1a;ArcToolBox tool Data Management Tools -> Features -> Repair Geometry . 注&#xff1a;要裁剪的图层是要编辑&#xff08;editor&#xff09;状态。

ArcGIS裁剪时警告 warning001003:Datum conflict between input and output

问题描述 ArcGIS进行clip操作的时候警告&#xff1a;warning001003:Datum conflict between input and output。 原因 问题在于&#xff0c;输入和裁剪范围的坐标系不同。即Input raster和output extent两个图层的坐标系不同。 解决方案 统一坐标系统&#xff0c;具体方法很…

ArcGIS裁剪影像如何保持裁剪完全一致

ArcGIS裁剪影像如何保持裁剪范围完全一致 在长时间序列的数据分析中&#xff0c;经常会遇到要求所有的栅格数据范围一致&#xff0c;栅格数一致&#xff0c;所以在使用ArcGIS时&#xff0c;需要设置一些参数&#xff0c;才能得到正确的结果。 使用mask工具&#xff08;掩膜提取…

gis 数据框裁剪_ArcGIS中裁剪工具的使用

应约讲下裁剪。数据裁剪是经常使用的一个工具&#xff0c;工具说明也直接明了&#xff0c;隐藏功能他是不是说的&#xff0c;今天具体讲讲怎么用。 1.分析工具-提取分析-裁剪&#xff0c;启动裁剪工具。 2.将数据选中后&#xff0c;进行裁剪。输入要素此时不做任何选中。 看结果…

ArcGIS:矢量、栅格文件裁剪(批量处理)

一、栅格文件批量裁剪 1.加载矢量边界&#xff08;xzq&#xff09;&#xff0c;在Catalog对应文件夹中可查看原始数据为6个tif文件 2.在工具栏中打开ModelBuilder: &#xff08;1&#xff09;将矢量边界拖入Model&#xff1b;通过Insert->Iterators->Rasters添加栅格数据…

ArcMap(ArcGIS)批量裁剪图片【超详细】

1、将shp文件拖入ArcMap 2、打开工具&#xff08;ArcToolbox&#xff09; 3、右键按掩膜提取&#xff0c;选择批处理 4、增加列表的行数&#xff0c;使其与需要进行批量处理的图像数量保持一致 5、新建excel&#xff0c;填写相关信息 6、选中这17行 将excel数据复制至这1…

ArcGIS栅格裁剪

自己进行了ArcGIS栅格的裁剪&#xff0c;总结了一些小经验&#xff1a; 首先需要准备好待裁剪的栅格影像和裁剪范围&#xff0c;这里是博主自己画的面要素 然后ArcToolbox——数据管理工具——栅格——栅格处理——裁剪 如果选择了使用输入要素裁剪几何&#xff0c;裁剪出的栅…

用arcgis批量裁剪栅格(tiff)数据的矩形区域

首先&#xff0c;打开arcgis软件arcmap&#xff0c;然后加入数据 然后&#xff0c;在工作目录新建一个工具箱并命名​ 新建模型并命名进一步搭建模型 如图&#xff1a; 进一步搭建模型 插入迭代器&#xff0c;选择栅格 ​ 单击迭代栅格数据&#xff0c;选择参数&#xff0c;…

ArcGis批量裁剪栅格图层

1、简述 本文主要讲述&#xff1a; 还是老样子&#xff0c;先给初始的样子&#xff1a; 这些都是一个县的栅格图层&#xff0c;现在要全部裁剪为指定村的栅格图层&#xff0c;这要是用按掩膜提取工具去一个个裁剪&#xff0c;这得弄多久呀&#xff01;&#xff01; 于是利用A…

arcgis栅格影像裁剪--shp

1、打开软件&#xff0c;导入数据&#xff0c;如下&#xff1a; 2、裁剪面形状如下&#xff0c;为shp文件&#xff1a; 3、在arctoolbox中找到"数据管理工具"--"栅格"--"栅格处理"--"裁剪"工具&#xff0c;如下&#xff1a; 4、打开裁…

【彩艳】ArcGIS影像裁剪说明

作者&#xff1a;彩艳 1 数据准备 栅格数据&#xff1a;卫星影像图&#xff08;tif/jpg等格式&#xff09;矢量数据&#xff1a;用于裁剪与栅格重叠的矢量面数据&#xff08;.shp&#xff09; 2 裁剪步骤 2.1 单个矢量文件裁剪 &#xff08;1&#xff09;数据加载。打开Ar…

ARCGIS批量矢量裁剪.

ARCGIS批量矢量裁剪. 平台&#xff1a;ARCGIS10.8 工具&#xff1a;模型构建器 将需要使用的工具拖入模型构建器中 2.在模型构建器中选择插入&#xff08;insert&#xff09; 3.输入两个模型后&#xff0c;双击iterate feature classes 4.右键iterate feature classes点击ru…

Arcgis栅格裁剪批处理工具

前提 有时候需要批量裁剪栅格或者矢量,在没有脚本的情况下,需要处理大量的数据还是比较麻烦的,其实,Arcgis本身自带批处理功能,基本上所有的工具都支持,下面以栅格裁剪为案例 效果 1、打开栅格裁剪工具 2、右键选择批处理 3、编辑参数 1)输入栅格参数 如果图层中已加…

【ArcGIS教程】批量裁剪

ArcGIS教程&#xff1a;批量裁剪 1 裁剪1.1 准备&#xff1a;创建shp文件/选定区域、自由选区1.1 单一裁剪1.2 批量裁剪&#xff08;Batch&#xff09; 2 批量裁剪参考 1 裁剪 1.1 准备&#xff1a;创建shp文件/选定区域、自由选区 步骤1&#xff1a; 创建shp文件 打开ArcCat…

ArcGIS裁剪带有黑边的影像图两种方法

ArcGIS处理影像图的过程中&#xff0c;当我们拿到的影像图带有黑边时&#xff0c;我们应当如何去去除这些黑边 这里介绍两种方法 准备工作&#xff1a; 新建面要素作为输出范围或要素掩膜数据 创建面要素为要获取的影像图范围 方法一&#xff1a; 数据管理工具–栅格–栅…