- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我得到一张 JPEG 图像,需要使用 CSS 对其进行裁剪,然后将其展开以适应 1200px x 1000px
框。
这是我目前所拥有的:
#top-image {
display: block;
clip-path: inset(0px 103px 45px 105px);
margin-left: auto;
margin-right: auto;
width: 1200px;
height: 1000px;
}
<img src="https://via.placeholder.com/750x500" id="top-image">
clip-path
属性裁剪 750px x 500px
的原始图像。当我将宽度和高度设置为上面代码段中提到的值时,会出现两个问题:
clip-path
中使用的像素值基于新的 1200 x 1000
框,而不是原始图像。
原始(未交叉)图像(包括裁剪部分)扩展到方框。但是,我想扩大裁剪后的图像以填充框。
使用纯 CSS 执行此操作的最佳方法是什么?
更新 1:我可以使用百分比而不是像素来解决第一个问题。
最佳答案
为此使用背景并调整background-size
/background-position
:
#top-image {
display: block;
/*clip-path: inset(0px 103px 45px 105px);*/
width: 1200px;
height: 1000px;
background-image:url(https://picsum.photos/1200/1000?image=0);
background-size:
calc(100% + 103px + 105px) /*100% of the width + the cropped part*/
calc(100% + 45px); /*100% of the height + the cropped part*/
background-position:
-103px /*we shift to the left to crop the 103px*/
0; /*we keep at the top and the bottom will be cropped*/
}
<div id="top-image"></div>
上面的将根据容器裁剪像素。如果您需要根据图像尺寸进行裁剪,请执行以下操作:
#top-image {
display: block;
/*clip-path: inset(0px 103px 45px 105px);*/
width: 1200px;
height: 1000px;
background-image:url(https://picsum.photos/750/500?image=1069);
background-size:
calc(750px*(1200/(750 - 103 - 105)))
calc(500px*(1000/(500 - 45)));
background-position:
calc(-103px*(1200/(750 - 103 - 105)))
0;
}
<div id="top-image"></div>
您的图像的高度为 500px
,您想要裁剪 45px
因此我们将有 455px
需要覆盖 1000px
所以我们需要乘以 1000/455
。与宽度相同的逻辑。考虑到相同的乘法,我们需要将位置移动 103px
crop。
我们也可以用不同的方式来写。
我将使用下图 (300x150
),我将从左边裁剪 100px
,从右边裁剪 60px
,距顶部 10px
,距底部 45px
。然后它将覆盖一个尺寸为 400x200
的容器。我们应该只看到黄色部分。
.image {
display: block;
margin:5px;
width: 400px;
height: 200px;
background-image:url(/image/Xde45.png);
background-size:
calc(300px*(400/(300 - 100 - 60)))
calc(150px*(200/(150 - 10 - 45)));
background-position:
calc(-100px*(400/(300 - 100 - 60)))
calc(-10px *(200/(150 - 10 - 45)));
}
.alt {
background-size:
calc(100% + (100 + 60)*(400px/(300 - 100 - 60)))
calc(100% + (45 + 10) *(200px/(150 - 10 - 45)));
background-position:
calc(-100*(400px/(300 - 100 - 60)))
calc(-10 *(200px/(150 - 10 - 45)));
}
.alt2 {
--c-left:100; /*crop left*/
--c-right:60; /*crop right*/
--c-bottom:45; /*crop bottom*/
--c-top:10; /*crop top*/
--c-x:calc(var(--c-right) + var(--c-left));
--c-y:calc(var(--c-top) + var(--c-bottom));
background-size:
calc(100% + var(--c-x)*(100%/(300 - var(--c-x))))
calc(100% + var(--c-y)*(100%/(150 - var(--c-y))));
background-position:
calc(-1*var(--c-left)*(400px/(300 - var(--c-x))))
calc(-1*var(--c-top) *(200px/(150 - var(--c-y)))) ;
}
<div class="image"></div>
<div class="image alt"></div>
<div class="image alt2"></div>
我们可以采用最后一种语法并考虑更多变量以获得更动态和更灵敏的:
.image {
display: block;
margin:5px;
width: var(--w,400px);
height: var(--h,200px);
background-image:url(/image/Xde45.png);
--c-left:100; /*crop left*/
--c-right:60; /*crop right*/
--c-bottom:45; /*crop bottom*/
--c-top:10; /*crop top*/
--c-x:calc(var(--c-right) + var(--c-left));
--c-y:calc(var(--c-top) + var(--c-bottom));
background-size:
calc(100% + var(--c-x)*(100%/(300 - var(--c-x))))
calc(100% + var(--c-y)*(100%/(150 - var(--c-y))));
background-position:
calc(-1*var(--c-left)*(var(--w,400px)/(300 - var(--c-x))))
calc(-1*var(--c-top) *(var(--h,200px)/(150 - var(--c-y)))) ;
}
<div class="image"></div>
<div class="image" style="--w:200px;--h:100px;"></div>
<div class="image" style="--w:150px;--h:150px;"></div>
关于css - 如何将裁剪后的图像扩展到盒子中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54272230/
是否有可能(在 cmd 批处理 ffmpeg 中)拍摄宽度已知(1920px)但高度未知的图像,如果超过,则将高度裁剪为特定的值?基本上是最大高度裁剪。 我玩过缩放和裁剪,但我无法得到我需要的结果。任
我有两个 SpatialPolygonsDataFrame文件:dat1、dat2 extent(dat1) class : Extent xmin : -180 xmax
我在 TensorFlow 上实现了全卷积网络。它使用编码器-解码器结构。训练时,我始终使用相同的图像大小(224x224,使用随机裁剪)并且一切正常。 在干扰阶段,我想一次预测一张图像,因为我想使用
我在 TensorFlow 上实现了全卷积网络。它使用编码器-解码器结构。训练时,我始终使用相同的图像大小(224x224,使用随机裁剪)并且一切正常。 在干扰阶段,我想一次预测一张图像,因为我想使用
我有一个需要裁剪的 View 。我有 4 个 View 显示在主视图上查看的视频 subview 。由于视频比例,我需要裁剪使视频成为正方形而不是矩形的 View 。这是我的代码: - (void)v
我正在构建一个使用 Parse 作为我的后端的网络应用程序。 部分注册过程涉及用户上传和裁剪图片,然后我将其传递到我的数据库(图片是用户个人资料的一部分,类似于您在 Twitter 上所做的)。 我已
我正在制作一个基于立方体的游戏(一切都是立方体),目前正在尝试通过不在视野之外绘制东西来优化它。 以下内容仅适用于 x 和 y 平面,稍后我会担心 z ......所以现在只进行侧面裁剪。 我知道我自
我正在尝试在 iOS 上实现单指图像缩放/裁剪。类似于柯比·特纳的单指旋转。我正在寻找现有的库,或者如果您可以帮助我处理代码本身,那就太好了。 最佳答案 我不太清楚你所说的一指裁剪是什么意思,但我为
从这里: http://www.kylejlarson.com/blog/2011/how-to-create-pie-charts-with-css3/ .pieContainer
我已经设置了一个 SKScene 用作 SKReferenceNode。雪橇是一个 SKSpriteNode,在引用节点场景中定义了一个自定义类,所有的狗都是雪橇 Sprite 的 child 。自定
我有一个库,其中包含一些图像处理算法,包括感兴趣区域(裁剪)算法。使用 GCC 编译时,自动矢量化器会加速很多代码,但会降低 Crop 算法的性能。是否有标记某个循环以被矢量化器忽略的方法,或者是否有
代码位于 http://jsfiddle.net/rSSXu/ Child #parent { margin-left:auto; margin-right:auto;
我搜索了很多以删除不需要的空间,但找不到。我只找到可用于删除黑白背景空间的链接。但我的背景图片可以是任何东西。所以,如果我有这些图片, 我如何提取我需要的图像部分。例如, 最佳答案 这是我对你的问题的
我正在尝试将 CMSampleBufferRef 中的图像裁剪为特定大小。我正在执行 5 个步骤 - 1. 从 SampleBuffer 获取 PixelBuffer 2. 将 PixelBuffer
我读到它是自动的,但在我的案例中似乎没有发生。使用 UIImagePickerController 并将 allowsEditing 设置为 YES 我得到了带有裁剪方形叠加层的编辑 View ,但是
我正在寻找一种高效的方法来裁剪二维数组。考虑这个例子: 我有一个构成 100x100 网格的二维数组。我只想返回其中的一部分,60x60。这是一个“a”方法的示例,但我正在寻找指向执行此操作的最高性能
我有一个接受 UIImage 的类,用它初始化一个 CIImage,如下所示: workingImage = CIImage.init(image: baseImage!) 然后使用图像以 3x3 的
我正在尝试显示来自 mysql 数据库的图像。有些图像显示正确,但有些图像在底部显示为剪切/裁剪,裁剪部分仅显示为空白,当它成为图像的一部分时,您真的无法摆脱。 CSS 无法解决这个问题,使用 ima
我有个问题。我有什么理由不应该使用这个 Intent: Intent intent = new Intent("com.android.camera.action.CROP"); 为了裁剪我刚刚拍摄的
我有一些代码可以调整图像大小,因此我可以获得图像中心的缩放 block - 我使用它来获取 UIImage 并返回一个小的方形表示图片,类似于在照片应用程序的相册 View 中看到的内容。 (我知道我
我是一名优秀的程序员,十分优秀!