图片拉伸和填充推理性能对比

在进行推理过程中,对送入到模型中的图片主要有两种处理措施:

一种是对原图大于模型输入的图片,进行压缩,这个是不可避免的
这里,我们只讨论小图片处理的情况

小图片处理措施

另外一种是对小于模型的输入图片的处理

  1. 创建一个跟模型输入要求一致的画布,将原图内容复制到画布的左上角,其他地方填充黑色或者灰色

在这里插入图片描述
在这里插入图片描述

  1. 对原图进行拉伸操作

在这里插入图片描述

两种方式,在处理时长上并没有明显差异。且第一种填充的方式,并不会改变原图的像素信息,为第一选择。

推理测试数据

测试平台

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01    Driver Version: 440.33.01    CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  TITAN RTX           Off  | 00000000:19:00.0 Off |                  N/A |
| 23%   51C    P0    56W / 280W |      0MiB / 24220MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |

测试结果

在这里插入图片描述

<think>好的,用户想了解如何使用CSS实现背景图片拉伸填充。我需要回忆一下相关的CSS属性,特别是background-sizebackground-position这些常用的属性。首先,background-size: cover应该是一个常用的方法,它会让图片覆盖整个容器,保持比例,可能会被裁剪。而background-size: contain则是保持图片完整显示,可能会有留白。不过用户提到的是拉伸填充,可能指的是完全填充,不保持比例,这时候可能需要用100% 100%的值,这样图片会被拉伸以适应容器,但可能会变形。 接下来,我需要检查是否还有其他方法,比如使用object-fit属性,不过那通常用于img标签而不是背景图片。另外,可能还需要结合background-position来调整图片的位置,确保关键部分可见。例如,使用background-position: center可以让图片居中显示,这在cover或contain时很重要。 然后,用户提供的引用中有提到使用clip-path来创建动态效果,虽然这不是直接相关,但也许在某些情况下可以结合使用。不过主要的方法还是background-size的几个属性值。另外,用户提供的引用中关于自适应的正方形的实现,可能容器尺寸有关,但背景图片拉伸更多是调整图片本身的大小。 我需要确保回答覆盖主要的几种方法:cover、contain、100% 100%,以及可能的相关属性如background-repeatbackground-position。同时,要给出代码示例,说明每个方法的效果适用场景。例如,cover适用于需要完全覆盖容器且可以接受裁剪的情况,而100% 100%则适用于需要拉伸填充但可能变形的情况。 另外,用户可能想知道如何同时兼容不同浏览器,是否需要加前缀,但现代浏览器大多支持background-size。不过可能需要提到兼容性方面的注意事项。此外,是否还有其他技巧,比如使用多背景图或者渐变来辅助拉伸填充,但可能这些方法不如直接使用background-size直接。 总结一下,回答应该分点列出不同的技术,如cover、contain、100% 100%,并解释每个的作用,给出示例代码。同时,可以提到相关的属性如background-positionbackground-repeat的设置,以优化显示效果。最后,可能需要提醒用户注意图片比例容器比例是否匹配,避免过度变形或裁剪。</think>要实现CSS背景图片拉伸填充,主要通过控制$background-size$属性实现,以下是5种常用技术及实现方法: ### 一、基础拉伸方法 1. **完全拉伸填充(可能变形)** ```css .container { background-image: url("image.jpg"); background-size: 100% 100%; /* 强制拉伸至容器尺寸 */ background-repeat: no-repeat; } ``` 此方法会破坏图片宽高比,适用于需要完全填充且不要求保持比例的场合[^1]。 2. **等比覆盖容器(cover属性)** ```css .container { background-image: url("image.jpg"); background-size: cover; /* 自动计算比例,裁剪溢出部分 */ background-position: center; /* 控制显示区域 */ } ``` 保持原图比例的最小放大/缩小,确保至少一个方向完全覆盖容器[^5]。 ### 二、高级适配方案 3. **多背景混合模式** ```css .container { background: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)), url("image.jpg") center/cover; } ``` 通过叠加渐变层增强可读性,同时保持背景图覆盖效果[^4]。 4. **视窗单位适配** ```css .container { background-image: url("image.jpg"); background-size: 100vw 100vh; /* 基于视窗单位 */ background-attachment: fixed; } ``` 特别适用于全屏背景场景,需注意移动端适配问题[^2]。 ### 三、响应式处理 5. **媒体查询优化** ```css .container { background-image: url("image.jpg"); background-size: cover; } @media (max-aspect-ratio: 16/9) { .container { background-size: auto 100%; } } ``` 根据容器宽高比动态调整填充策略,避免关键内容被裁切[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值