当前位置: 首页 > 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;旨在提供更加精准、智能的搜索…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...