我想显示来自 URL 的具有特定宽度和高度的图像,即使它具有不同的尺寸比例。所以我想调整大小(保持比例),然后将图像剪切到我想要的大小。

我可以用 html 调整大小 img 财产和我可以削减 background-image.
我怎样才能两者兼得?

例子:

这个图片:

enter image description here


有尺寸 800x600 像素,我想显示为图像 200x100 像素


img 我可以调整图像大小 200x150px:

<img 
    style="width: 200px; height: 150px;" 
    src="http://i.stack.imgur.com/wPh0S.jpg">


这给了我这个:

<img style="width: 200px; height: 150px;" src="https://i.stack.imgur.com/wPh0S.jpg">


background-image 我可以剪图 200x100 像素。

<div 
    style="background-image:
           url('https://i.stack.imgur.com/wPh0S.jpg'); 
    width:200px; 
    height:100px; 
    background-position:center;">&nbsp;</div>

给我:

<div style="background-image:url('https://i.stack.imgur.com/wPh0S.jpg'); width:200px; height:100px; background-position:center;">&nbsp;</div>


我怎样才能两者兼得?
调整图像大小,然后将其剪切为我想要的大小?

有帮助吗?

解决方案

您可以使用这两种方法例如组合。

    .crop {
        width: 200px;
        height: 150px;
        overflow: hidden;
    }

    .crop img {
        width: 400px;
        height: 300px;
        margin: -75px 0 0 -100px;
    }
    <div class="crop">
        <img src="https://i.stack.imgur.com/wPh0S.jpg" alt="Donald Duck">
    </div>

可以使用负margin<div/>内四处移动图像。

其他提示

使用CSS3可以改变a的大小 background-imagebackground-size, ,同时实现这两个目标。

一堆例子CSS3.info.

根据你的例子实现, , 使用 donald_duck_4.jpg. 。在这种情况下, background-size: cover; 正是您想要的 - 它适合 background-image 覆盖包含的整个区域 <div> 并修剪多余的部分(取决于比例)。

.with-bg-size {
  background-image: url('https://i.stack.imgur.com/wPh0S.jpg');
  width: 200px;
  height: 100px;
  background-position: center;
  /* Make the background image cover the area of the <div>, and clip the excess */
  background-size: cover;
}
<div class="with-bg-size">Donald Duck!</div>

你有没有尝试使用这个?

.centered-and-cropped { object-fit: cover }

我需要来调整图像,中心(垂直和水平),并比它的作物

我很高兴地发现,它可以在一个CSS在线进行。 这里检查例如: http://codepen.io/chrisnager/pen/azWWgr/ ?编辑= 110


下面是从该示例的CSSHTMLcode:

.centered-and-cropped { object-fit: cover }
<h1>original</h1>
<img height="200" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/3174/bear.jpg" alt="Bear">
    
<h1>object-fit: cover</h1>
<img class="centered-and-cropped" width="200" height="200" 
style="border-radius:50%" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/3174/bear.jpg" alt="Bear">

.imgContainer {
  overflow: hidden;
  width: 200px;
  height: 100px;
}
.imgContainer img {
  width: 200px;
  height: 120px;
}
<div class="imgContainer">
  <img src="imageSrc" />
</div>

使用基本上包含div通过隐藏溢出裁剪图像。

img {
  position: absolute;
  clip: rect(0px, 140px, 140px, 0px);
}
<img src="w3css.gif" width="100" height="140" />

感谢sanchothefat。

我有一个改进你的答案。作物对每个图像非常适合,这定义应该在HTML代替CSS。

<div style="overflow:hidden;">
   <img src="img.jpg" alt="" style="margin:-30% 0px -10% 0px;" />
</div>
  

object-fit 可以帮助你,如果你与<img>标签玩

下面的代码将裁剪图像为您服务。你可以玩弄对象配合

img {
  object-fit: cover;
  width: 300px;
  height: 337px;
}
img {
    position: absolute;
    clip: rect(0px,60px,200px,0px);
} 

在作物类,将要显示的图像尺寸:

.crop {
    width: 282px;
    height: 282px;
    overflow: hidden;
}
.crop span.img {
    background-position: center;
    background-size: cover;
    height: 282px;
    display: block;
}

在HTML看起来像:

<div class="crop">
    <span class="img" style="background-image:url('http://url.to.image/image.jpg');"></span>
</div>
<p class="crop"><a href="http://templatica.com" title="Css Templates">
    <img src="img.jpg" alt="css template" /></a></p> 

.crop {
    float: left;
    margin: .5em 10px .5em 0;
    overflow: hidden; /* this is important */
    position: relative; /* this is important too */
    border: 1px solid #ccc;
    width: 150px;
    height: 90px;
}
.crop img {
    position: absolute;
    top: -20px;
    left: -55px;
}

现场实施例: https://jsfiddle.net/de4Lt57z/

HTML:

<div class="crop">
  <img src="example.jpg" alt="..." />
</div>

CSS:

    .crop img{
      width:400px;
      height:300px;
      position: absolute;
      clip: rect(0px,200px, 150px, 0px);
      }

<强>说明: 这里图像由图像的宽度和高度值调整大小。和作物被剪辑属性来完成。

有关剪辑属性如下细节: http://tympanus.net/codrops/2013/ 1月16日/理解最CSS-剪辑属性/

您可以把img标签的div标签和两者都做,但我会建议不要在浏览器缩放图像。它做了糟糕的工作大部分时间,因为浏览器有非常简单的缩放算法。更好地做到在Photoshop或ImageMagick的您缩放,然后再为它服务到客户端不错,很漂亮。

我所做的是创建一个服务器端脚本,将调整和裁剪对服务器端的图片所以它会在整个interweb发送的数据量。

这是相当微不足道,但如果有人有兴趣,我可以挖掘和张贴代码(asp.net)

服务 像 Filestack 一样,它会为你做这件事。

它们获取您的图像网址并允许您使用网址参数调整其大小。这很容易。

将大小调整为 200x100 但保持纵横比后,您的图像将如下所示

整个网址看起来像这样

https://process.filestackapi.com/AhTgLagciQByzXpFGRI0Az/resize=width:200/crop=d:[0,25,200,100]/https://i.stack.imgur.com/wPh0S.jpg

但重要的部分只是

resize=width:200/crop=d:[0,25,200,100]

enter image description here

<div class="crop">
    <img src="image.jpg"/>
</div>
.crop {
  width: 200px;
  height: 150px;
  overflow: hidden;
}
.crop img {
  width: 100%;
  /*Here you can use margins for accurate positioning of cropped image*/
}

如果您使用的是引导,请尝试使用{ background-size: cover; }<div>也许给股利一类说<div class="example" style=url('../your_image.jpeg');>因此它成为 div.example{ background-size: cover}

我最近需要这样做。我想制作一个 NOAA 图表的缩略图链接。由于他们的图表可能随时更改,因此我希望我的缩略图也随之更改。但他们的图表有一个问题:它的顶部有一个巨大的白色边框,因此如果您只是缩放它以制作缩略图,最终会在文档中出现无关的空白。

我是这样解决的:

http://sealevel.info/example_css_scale_and_crop.html

首先我需要做一些算术。NOAA 的原始图像为 960 × 720 像素,但顶部 70 个像素是多余的白色边框区域。我需要一个 348 × 172 的缩略图,顶部没有多余的边框区域。这意味着原始图像的所需部分高为 720 - 70 = 650 像素。我需要将其缩小到 172 像素,即 172 / 650 = 26.5%。这意味着需要从缩放图像的顶部删除 70 = 19 行像素中的 26.5%。

所以…

  1. 设置高度 = 172 + 19 = 191 像素:

    身高=191

  2. 将下边距设置为 -19 像素(将图像缩短为 172 像素高):

    下边距:-19px

  3. 将顶部位置设置为 -19 像素(将图像向上移动,以便顶部 19 像素行溢出并隐藏,而不是底部的行):

    顶部:-19px

生成的 HTML 如下所示:

<a href="…" style="display:inline-block;overflow:hidden">
<img width=348 height=191 alt=""
style="border:0;position:relative;margin-bottom:-19px;top:-19px"
src="…"></a>

正如您所看到的,我选择设置包含 <a> 标签的样式,但您也可以设置 <div> 的样式。

这种方法的一个缺陷是,如果显示边框,则顶部边框将会丢失。因为无论如何我都使用 border=0,所以这对我来说不是问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top