当前位置: 首页 > news >正文

aspectFill(填充目标区域的同时保持图像的原有宽高比 (aspect ratio)图像不会被拉伸或压缩变形

aspectFill” 是一个常用于图像和视频处理的术语,尤其是在用户界面 (UI) 设计和图形编程领域。它描述的是一种图像缩放或调整大小的方式,旨在填充目标区域的同时保持图像的原有宽高比 (aspect ratio)

更详细的解释:

  • Aspect Ratio (宽高比): 指的是图像的宽度与高度的比例。 例如,一个 16:9 的图像,宽度是高度的 16/9 倍。 保持宽高比意味着在缩放或调整大小的过程中,原始的宽度和高度的比例关系不会被改变,图像不会被拉伸或压缩变形。

  • Fill (填充): 指图像需要完全覆盖或填充目标区域,不留任何空白区域。

  • AspectFill 的工作方式:

    当使用 aspectFill 模式缩放图像时,系统会执行以下操作:

    1. 计算缩放比例: 系统会计算两个缩放比例:
      • 宽度缩放比例: 目标区域的宽度 / 原始图像的宽度
      • 高度缩放比例: 目标区域的高度 / 原始图像的高度
    2. 选择较大的缩放比例: 系统会选择 宽度缩放比例和高度缩放比例中较大的那个 作为最终的缩放比例。 这样做是为了确保缩放后的图像能够 完全覆盖 目标区域的 宽度和高度
    3. 应用缩放并裁剪:
      • 使用选定的较大缩放比例对原始图像进行缩放。
      • 由于选择了较大的缩放比例,缩放后的图像可能会 超出 目标区域的另一个维度 (宽度或高度)。 为了完全填充目标区域,系统会 裁剪 图像超出目标区域的部分。 裁剪通常是居中裁剪,保留图像的中心部分。

视觉效果:

  • 图像填充目标区域: 使用 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>

我已经完成了修改,主要做了以下更改:

  1. compare.wxss 中:

    • 恢复了 product-item 的固定高度(648rpx)
    • 恢复了 product-swiper 的 100% 高度
    • 设置 product-image 为 100% 宽高
  2. compare.wxml 中:

    • 将图片的 modeaspectFit 改为 aspectFill

这些修改的效果是:

  1. 图片会保持原始比例(不会变形)
  2. 图片会完全铺满容器(可能会有裁剪)
  3. 容器保持固定高度
  4. 图片会居中显示,超出部分会被裁剪

aspectFill 模式的特点是:

  • 保持纵横比缩放图片
  • 确保图片完全覆盖容器
  • 图片居中显示
  • 超出容器的部分会被裁剪掉

这样的显示效果应该更符合你的要求,图片会完全填充容器但不会变形。

在这里插入图片描述

相关文章:

aspectFill(填充目标区域的同时保持图像的原有宽高比 (aspect ratio)图像不会被拉伸或压缩变形

“aspectFill” 是一个常用于图像和视频处理的术语&#xff0c;尤其是在用户界面 (UI) 设计和图形编程领域。它描述的是一种图像缩放或调整大小的方式&#xff0c;旨在填充目标区域的同时保持图像的原有宽高比 (aspect ratio)。 更详细的解释: Aspect Ratio (宽高比): 指的是图…...

我的年度写作计划

目录 计算机经典四件 数据结构 计算机网络体系 经典操作系统与计算机架构 嵌入式领域笔记 其他部分 私货部分 笔者打算在这里理一下今年的写作计划&#xff0c;如下所示&#xff1a; 计算机经典四件 数据结构 笔者因为冲刺面试需要&#xff0c;还是要更加扎实的掌握自…...

DeepSeek与llama本地部署(含WebUI)

DeepSeek从2025年1月起开始火爆&#xff0c;成为全球最炙手可热的大模型&#xff0c;各大媒体争相报道。我们可以和文心一言一样去官网进行DeepSeek的使用&#xff0c;那如果有读者希望将大模型部署在本地应该怎么做呢&#xff1f;本篇文章将会教你如何在本地傻瓜式的部署我们的…...

SOA(面向服务架构)全面解析

1. 引言 什么是SOA&#xff08;面向服务架构&#xff09; SOA&#xff08;Service-Oriented Architecture&#xff0c;面向服务架构&#xff09;是一种将应用程序功能以“服务”的形式进行模块化设计的架构风格。这些服务是独立的功能模块&#xff0c;它们通过定义明确的接口…...

PyQt6/PySide6 的 QDialog 类

QDialog 是 PyQt6 或 PySide6 库中用于创建对话框的类。对话框是一种特殊的窗口&#xff0c;通常用于与用户进行短期交互&#xff0c;如输入信息、显示消息或选择选项等。QDialog 提供了丰富的功能和灵活性&#xff0c;使得开发者可以轻松地创建各种类型的对话框。下面我将详细…...

mes系统对工业数字化转型起到重要作用,它的实际应用有哪些

一、生产计划与调度 在工业数字化转型中&#xff0c;MES 系统能够对生产计划进行高效的管理和调度。通过与企业资源计划&#xff08;ERP&#xff09;系统的集成&#xff0c;MES 可以获取生产订单信息&#xff0c;并根据生产设备的状态、人员安排以及物料供应情况等因素&#x…...

Qt:项目文件解析

目录 QWidget基础项目文件解析 .pro文件解析 widget.h文件解析 widget.cpp文件解析 widget.ui文件解析 main.cpp文件解析 认识对象模型 窗口坐标系 QWidget基础项目文件解析 .pro文件解析 工程新建好之后&#xff0c;在工程目录列表中有⼀个后缀为 ".pro" …...

【学术投稿】第五届计算机网络安全与软件工程(CNSSE 2025)

重要信息 官网&#xff1a;www.cnsse.org 时间&#xff1a;2025年2月21-23日 地点&#xff1a;中国-青岛 简介 第五届计算机网络安全与软件工程&#xff08;CNSSE 2025&#xff09;将于2025年2月21-23日在中国-青岛举行。CNSSE 2025专注于计算机网络安全、软件工程、信号处…...

Java 大视界 -- Java 大数据在智能供应链中的应用与优化(76)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

WEB攻防-文件下载文件读取文件删除目录遍历目录穿越

目录 一、文件下载漏洞 1.1 文件下载案例&#xff08;黑盒角度&#xff09; 1.2 文件读取案例&#xff08;黑盒角度&#xff09; 二、文件删除 三、目录遍历与目录穿越 四、审计分析-文件下载漏洞-XHCMS 五、审计分析-文件读取漏洞-MetInfo-函数搜索 六、审计分析-…...

部署open webui 调用ollama启动的deepseek

以下是 部署Open WebUI并调用Ollama的deepseek-70b模型 的详细步骤&#xff0c;重点讲解部署和配置过程&#xff1a; 一、部署 Open WebUI 1. 安装Docker&#xff08;如已安装可跳过&#xff09; # 自动安装Docker curl -fsSL https://get.docker.com | sh # 启动Docker服务 …...

理解推理型大语言模型

构建和改进推理模型的方法与策略 本文描述了构建推理模型的四种主要方法&#xff0c;以及我们如何增强大型语言模型&#xff08;LLM&#xff09;的推理能力。我希望这能为你提供有价值的见解&#xff0c;并帮助你了解这一领域快速发展的文献和热潮。 在2024年&#xff0c;LLM…...

告别人工检测!casaim自动化三维激光扫描

在工业制造和工程领域&#xff0c;传统的质量检测方法主要依赖人工操作&#xff0c;不仅效率低下&#xff0c;而且容易受到人为因素的影响&#xff0c;导致检测结果的不一致性和重复性差。 传统人工检测的局限性&#xff1a; 传统的人工检测方法&#xff0c;如使用卡尺、千分…...

使用云效解决docker官方镜像拉取不到的问题

目录 前言原文地址测试jenkins构建结果:后续使用说明 前言 最近经常出现docker镜像进行拉取不了&#xff0c;流水线挂掉的问题&#xff0c;看到一个解决方案: 《借助阿里个人版镜像仓库云效实现全免费同步docker官方镜像到国内》 原文地址 https://developer.aliyun.com/artic…...

Linux TCP 编程详解与实例

一、引言 在网络编程的领域中&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff09;协议因其可靠的数据传输特性而被广泛应用。在 Linux 环境下&#xff0c;使用 C 或 C 进行 TCP 编程可以实现各种强大的网络应用。本文将深入探讨 Linux TCP 编程的各个方面&…...

认识O(NlogN)的排序

归并排序 归并排序&#xff08;任何一个递归&#xff09;如果不懂可以画一个树状结构去帮助自己去理解。 核心排序方法为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 系统重新分区

一&#xff0c;刷入TWRP 1. 电脑下载 Fastboot 工具&#xff08;解压备用&#xff09;和对应机型 TWRP&#xff08;.img 后缀文件&#xff0c;将其放入前面解压的文件夹里&#xff09; 或者直接这里下载:TWRP 2. 将手机关机&#xff0c;长按音量上和下键 开机键 进入 fastbo…...

对ReentrantLock的公平性进行测试

ReentrantLock公平性实现原理 在ReentrantLock类内部定义了一个内部类Sync以及两个实现NonfairSync和FairSync&#xff0c;它们内部定义了锁获取和释放的逻辑&#xff0c;下面我列出了两种同步类的代码&#xff0c;通过观察两个代码的差异就可以看到公平性是如何实现的。 Nonf…...

LabVIEW之TDMS文件

在很多场合&#xff0c;早期的LabVIEW版本不得不借助常规的数据库来做一些数据管理工作&#xff0c;但常规数据库对于中高速数据采集显然是不合适的&#xff0c;因为高速数据采集的数据量非常大&#xff0c;用一般的数据库无法满足存储数据的要求。 直到TDM(Technical Data Ma…...

DeepSeek 实现原理探析

DeepSeek 实现原理探析 引言 DeepSeek 是一种基于深度学习的智能搜索技术&#xff0c;它通过结合自然语言处理&#xff08;NLP&#xff09;、信息检索&#xff08;IR&#xff09;和机器学习&#xff08;ML&#xff09;等多领域的技术&#xff0c;旨在提供更加精准、智能的搜索…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...