aspectFill(填充目标区域的同时保持图像的原有宽高比 (aspect ratio)图像不会被拉伸或压缩变形
“aspectFill” 是一个常用于图像和视频处理的术语,尤其是在用户界面 (UI) 设计和图形编程领域。它描述的是一种图像缩放或调整大小的方式,旨在填充目标区域的同时保持图像的原有宽高比 (aspect ratio)。
更详细的解释:
-
Aspect Ratio (宽高比): 指的是图像的宽度与高度的比例。 例如,一个 16:9 的图像,宽度是高度的 16/9 倍。 保持宽高比意味着在缩放或调整大小的过程中,原始的宽度和高度的比例关系不会被改变,图像不会被拉伸或压缩变形。
-
Fill (填充): 指图像需要完全覆盖或填充目标区域,不留任何空白区域。
-
AspectFill 的工作方式:
当使用
aspectFill模式缩放图像时,系统会执行以下操作:- 计算缩放比例: 系统会计算两个缩放比例:
- 宽度缩放比例: 目标区域的宽度 / 原始图像的宽度
- 高度缩放比例: 目标区域的高度 / 原始图像的高度
- 选择较大的缩放比例: 系统会选择 宽度缩放比例和高度缩放比例中较大的那个 作为最终的缩放比例。 这样做是为了确保缩放后的图像能够 完全覆盖 目标区域的 宽度和高度。
- 应用缩放并裁剪:
- 使用选定的较大缩放比例对原始图像进行缩放。
- 由于选择了较大的缩放比例,缩放后的图像可能会 超出 目标区域的另一个维度 (宽度或高度)。 为了完全填充目标区域,系统会 裁剪 图像超出目标区域的部分。 裁剪通常是居中裁剪,保留图像的中心部分。
- 计算缩放比例: 系统会计算两个缩放比例:
视觉效果:
- 图像填充目标区域: 使用
aspectFill模式,图像会完全填充目标区域,没有任何空白边框。 - 保持宽高比: 图像的比例不会失真,不会被拉伸或压缩变形。
- 可能被裁剪: 为了完全填充,图像可能会被裁剪掉边缘部分,通常是图像的上下边缘或左右边缘会被裁剪,以适应目标区域的宽高比。
应用场景:
aspectFill 模式常用于以下场景:
- 背景图片: 作为背景图片时,通常希望图片能够完全覆盖背景区域,不留空白,同时又不想让背景图片变形。 例如,网站的背景图、APP 的背景图等。
- 封面图/海报: 在展示封面或海报时,希望图像能够尽可能地占满展示区域,增强视觉冲击力。
- 视频缩略图: 视频缩略图可能需要在固定大小的区域内展示,使用
aspectFill可以确保缩略图占满区域,并展示视频内容的关键部分。
与 aspectFit 的对比 (经常混淆):
aspectFit(也称为contain): 这种模式也会保持图像的宽高比,但它会 缩小 图像,直到整个图像都 完全显示 在目标区域内。 这意味着使用aspectFit模式,图像不会被裁剪,但可能会在目标区域周围留下 空白边框。
总结:
aspectFill: 填充 目标区域,保持 宽高比,可能裁剪。 不留空白,但可能损失边缘信息。aspectFit: 适应 目标区域,保持 宽高比,不裁剪。 不损失完整图像,但可能留有空白边框。
选择 aspectFill 还是 aspectFit 取决于你的具体需求。 如果你更关注 完全填充目标区域,不在意边缘裁剪,就选择 aspectFill。 如果你更关注 完整显示图像内容,可以接受空白边框,就选择 aspectFit。
在不同的 UI 框架和图形库中,可能会用不同的术语来表示 aspectFill 模式,例如 “cover”, “fillAspect”, “zoomCrop” 等,但核心概念都是相同的。
<swiper class="product-swiper" autoplay="{{true}}" interval="{{3000}}" duration="{{500}}" circular="{{true}}" bindchange="handleRightSwiperChange" current="{{rightCurrentIndex}}"><swiper-item wx:for="{{rightProduct.images}}" wx:key="index"><image class="product-image" src="{{item}}" mode="aspectFill"></image></swiper-item></swiper>
明白了,我们可以使用 aspectFill 模式让图片铺满容器,同时保持比例不变形。我来修改:
.product-item {width: 100%;height: 648rpx; /* 恢复固定高度 */position: relative;border: 1rpx solid #000000;margin-bottom: 16rpx;display: flex;flex-direction: column;overflow: hidden;
}.product-swiper {width: 100%;height: 100%;background-color: #FFFFFF;
}.product-image {width: 100%;height: 100%;display: block;background-color: #FFFFFF;
}// ... existing code ...
然后修改 compare.wxml 中的图片模式:
<swiper class="product-swiper" autoplay="{{true}}" interval="{{3000}}" duration="{{500}}" circular="{{true}}" bindchange="handleLeftSwiperChange" current="{{leftCurrentIndex}}"><swiper-item wx:for="{{leftProduct.images}}" wx:key="index"><image class="product-image" src="{{item}}" mode="aspectFill"></image></swiper-item></swiper><!-- ... existing code ... --><swiper class="product-swiper" autoplay="{{true}}" interval="{{3000}}" duration="{{500}}" circular="{{true}}" bindchange="handleRightSwiperChange" current="{{rightCurrentIndex}}"><swiper-item wx:for="{{rightProduct.images}}" wx:key="index"><image class="product-image" src="{{item}}" mode="aspectFill"></image></swiper-item></swiper>
我已经完成了修改,主要做了以下更改:
-
在
compare.wxss中:- 恢复了
product-item的固定高度(648rpx) - 恢复了
product-swiper的 100% 高度 - 设置
product-image为 100% 宽高
- 恢复了
-
在
compare.wxml中:- 将图片的
mode从aspectFit改为aspectFill
- 将图片的
这些修改的效果是:
- 图片会保持原始比例(不会变形)
- 图片会完全铺满容器(可能会有裁剪)
- 容器保持固定高度
- 图片会居中显示,超出部分会被裁剪
aspectFill 模式的特点是:
- 保持纵横比缩放图片
- 确保图片完全覆盖容器
- 图片居中显示
- 超出容器的部分会被裁剪掉
这样的显示效果应该更符合你的要求,图片会完全填充容器但不会变形。

相关文章:
aspectFill(填充目标区域的同时保持图像的原有宽高比 (aspect ratio)图像不会被拉伸或压缩变形
“aspectFill” 是一个常用于图像和视频处理的术语,尤其是在用户界面 (UI) 设计和图形编程领域。它描述的是一种图像缩放或调整大小的方式,旨在填充目标区域的同时保持图像的原有宽高比 (aspect ratio)。 更详细的解释: Aspect Ratio (宽高比): 指的是图…...
我的年度写作计划
目录 计算机经典四件 数据结构 计算机网络体系 经典操作系统与计算机架构 嵌入式领域笔记 其他部分 私货部分 笔者打算在这里理一下今年的写作计划,如下所示: 计算机经典四件 数据结构 笔者因为冲刺面试需要,还是要更加扎实的掌握自…...
DeepSeek与llama本地部署(含WebUI)
DeepSeek从2025年1月起开始火爆,成为全球最炙手可热的大模型,各大媒体争相报道。我们可以和文心一言一样去官网进行DeepSeek的使用,那如果有读者希望将大模型部署在本地应该怎么做呢?本篇文章将会教你如何在本地傻瓜式的部署我们的…...
SOA(面向服务架构)全面解析
1. 引言 什么是SOA(面向服务架构) SOA(Service-Oriented Architecture,面向服务架构)是一种将应用程序功能以“服务”的形式进行模块化设计的架构风格。这些服务是独立的功能模块,它们通过定义明确的接口…...
PyQt6/PySide6 的 QDialog 类
QDialog 是 PyQt6 或 PySide6 库中用于创建对话框的类。对话框是一种特殊的窗口,通常用于与用户进行短期交互,如输入信息、显示消息或选择选项等。QDialog 提供了丰富的功能和灵活性,使得开发者可以轻松地创建各种类型的对话框。下面我将详细…...
mes系统对工业数字化转型起到重要作用,它的实际应用有哪些
一、生产计划与调度 在工业数字化转型中,MES 系统能够对生产计划进行高效的管理和调度。通过与企业资源计划(ERP)系统的集成,MES 可以获取生产订单信息,并根据生产设备的状态、人员安排以及物料供应情况等因素&#x…...
Qt:项目文件解析
目录 QWidget基础项目文件解析 .pro文件解析 widget.h文件解析 widget.cpp文件解析 widget.ui文件解析 main.cpp文件解析 认识对象模型 窗口坐标系 QWidget基础项目文件解析 .pro文件解析 工程新建好之后,在工程目录列表中有⼀个后缀为 ".pro" …...
【学术投稿】第五届计算机网络安全与软件工程(CNSSE 2025)
重要信息 官网:www.cnsse.org 时间:2025年2月21-23日 地点:中国-青岛 简介 第五届计算机网络安全与软件工程(CNSSE 2025)将于2025年2月21-23日在中国-青岛举行。CNSSE 2025专注于计算机网络安全、软件工程、信号处…...
Java 大视界 -- Java 大数据在智能供应链中的应用与优化(76)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
WEB攻防-文件下载文件读取文件删除目录遍历目录穿越
目录 一、文件下载漏洞 1.1 文件下载案例(黑盒角度) 1.2 文件读取案例(黑盒角度) 二、文件删除 三、目录遍历与目录穿越 四、审计分析-文件下载漏洞-XHCMS 五、审计分析-文件读取漏洞-MetInfo-函数搜索 六、审计分析-…...
部署open webui 调用ollama启动的deepseek
以下是 部署Open WebUI并调用Ollama的deepseek-70b模型 的详细步骤,重点讲解部署和配置过程: 一、部署 Open WebUI 1. 安装Docker(如已安装可跳过) # 自动安装Docker curl -fsSL https://get.docker.com | sh # 启动Docker服务 …...
理解推理型大语言模型
构建和改进推理模型的方法与策略 本文描述了构建推理模型的四种主要方法,以及我们如何增强大型语言模型(LLM)的推理能力。我希望这能为你提供有价值的见解,并帮助你了解这一领域快速发展的文献和热潮。 在2024年,LLM…...
告别人工检测!casaim自动化三维激光扫描
在工业制造和工程领域,传统的质量检测方法主要依赖人工操作,不仅效率低下,而且容易受到人为因素的影响,导致检测结果的不一致性和重复性差。 传统人工检测的局限性: 传统的人工检测方法,如使用卡尺、千分…...
使用云效解决docker官方镜像拉取不到的问题
目录 前言原文地址测试jenkins构建结果:后续使用说明 前言 最近经常出现docker镜像进行拉取不了,流水线挂掉的问题,看到一个解决方案: 《借助阿里个人版镜像仓库云效实现全免费同步docker官方镜像到国内》 原文地址 https://developer.aliyun.com/artic…...
Linux TCP 编程详解与实例
一、引言 在网络编程的领域中,TCP(Transmission Control Protocol)协议因其可靠的数据传输特性而被广泛应用。在 Linux 环境下,使用 C 或 C 进行 TCP 编程可以实现各种强大的网络应用。本文将深入探讨 Linux TCP 编程的各个方面&…...
认识O(NlogN)的排序
归并排序 归并排序(任何一个递归)如果不懂可以画一个树状结构去帮助自己去理解。 核心排序方法为Merger public class 归并排序 {public static void main(String[] args) {int[] arr1 {3, 1, 2, 2, 5, 6};int[] arr2 Arrays.copyOf(arr1, arr1.len…...
[手机Linux] onepluse6T 系统重新分区
一,刷入TWRP 1. 电脑下载 Fastboot 工具(解压备用)和对应机型 TWRP(.img 后缀文件,将其放入前面解压的文件夹里) 或者直接这里下载:TWRP 2. 将手机关机,长按音量上和下键 开机键 进入 fastbo…...
对ReentrantLock的公平性进行测试
ReentrantLock公平性实现原理 在ReentrantLock类内部定义了一个内部类Sync以及两个实现NonfairSync和FairSync,它们内部定义了锁获取和释放的逻辑,下面我列出了两种同步类的代码,通过观察两个代码的差异就可以看到公平性是如何实现的。 Nonf…...
LabVIEW之TDMS文件
在很多场合,早期的LabVIEW版本不得不借助常规的数据库来做一些数据管理工作,但常规数据库对于中高速数据采集显然是不合适的,因为高速数据采集的数据量非常大,用一般的数据库无法满足存储数据的要求。 直到TDM(Technical Data Ma…...
DeepSeek 实现原理探析
DeepSeek 实现原理探析 引言 DeepSeek 是一种基于深度学习的智能搜索技术,它通过结合自然语言处理(NLP)、信息检索(IR)和机器学习(ML)等多领域的技术,旨在提供更加精准、智能的搜索…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
