在最长边上调整图像大小[重复]

Posted

技术标签:

【中文标题】在最长边上调整图像大小[重复]【英文标题】:Resizing image base on the longest side [duplicate] 【发布时间】:2016-10-01 14:39:31 【问题描述】:

我正在尝试找到一种方法来根据最长边重新调整图像 (.jpg) 文件的大小。垂直和水平拍摄的图像将有不同的最长边,我试图将它们放入大小固定的 div(内联块)中。如果我只控制宽度或长度,它们将不会按比例缩放(压扁)。

我已阅读“CSS Equivalent of the “if” statement”,似乎有一种类似/可能的方法我可以使用...找到最长的边(宽度或高度),然后为此添加 2 个 css。

也许是下面的内容? (页面是基于 html 的)

CSS

img.thumb  identify longest side //not quite sure how to go about this

img.thumb width 
  width:200px;
  height:auto;
  border:0px;


img.thumb height
  width:auto;
  height:200px;
  border:0px;

我不希望这样做,但我是否需要使用 JQuery 代替(例如,查找图像宽度和长度,如果宽度 > 长度则将“宽度”添加到类中)

【问题讨论】:

您确定如何调整大小的规则是什么?就像图像具有更大的宽度一样,预期的行为是什么,反之亦然?如果宽度和高度相同,会发生什么? @Mikey 感谢您的评论。首先,宽度和高度不会相同(这是确定的)。我正在尝试为重新调整大小创建 2 个规则。 A)当宽度大于高度时,将宽度重新调整为 200 像素,高度为自动。反之亦然 B) 高度。由于我不确定如何“确定哪个宽度或高度更长”,我将其重新调整为固定宽度:200px;高度:目前为 150 像素。 您正在寻找的是object-fit - 尚不支持所有浏览器,但有一些变通方法。如果你没事通过将它们设为背景图像,background-size 可以用于相同的效果(并且浏览器支持要高得多。) @CBroe,感谢您的评论和建议。我不熟悉背景图片和背景匹配。可以举个例子吗? 【参考方案1】:

使用 javascript 来执行此操作。

http://www.w3schools.com/js/js_htmldom_methods.asp

var thumbImage = document.getElementById("your-image-id").style ;
//Your calculation in some variable x , y
var thumbImage.width = x ;
var thumbImage.height = y ;

【讨论】:

【参考方案2】:

我相信这完全可以通过 CSS 来实现。

.thumb 
  display: inline-flex;
  width: 200px;
  height: 200px;
  vertical-align: middle;
  border: 1px solid gray;

.thumb img 
  max-width: 200px;
  max-height: 200px;
  margin: auto;
<div class="thumb">
  <img src="https://dl.dropboxusercontent.com/u/30527718/tall.jpg"/>
</div>
<div class="thumb">
  <img src="https://dl.dropboxusercontent.com/u/30527718/wide.jpg"/>
</div>

或Codepen demo

【讨论】:

好主意!使用display:inline-flex 在 Firefox 和 IE 中不起作用,但使用 table-cell 或 float 在所有浏览器中都可以正常工作。 @Lounge,非常感谢。有用!!但我有一个问题,它不会像你的那样与中心对齐。可能是什么问题? jsfiddle.net/2tc5Lh3m 如果您使用flexinline-flexjustify-content:center; 居中元素 @Maki,我的荣幸!乐意效劳。在您的小提琴中,您的&lt;img&gt; 标签上缺少margin: auto。 Updated fiddle @Maki 正确,无论 的直接父级是什么,都需要拥有所有 display: inline-flex, width, height, etc。本质上是this is how I'd do it。另外,这是对margin:auto works 的一个很好的解释

以上是关于在最长边上调整图像大小[重复]的主要内容,如果未能解决你的问题,请参考以下文章

CSS背景图像,根据视口调整大小[重复]

画布图像大小调整使文件更大[重复]

调整图像大小以使大小与指定的纵横比匹配[重复]

Python,调整文件夹中的图像大小[重复]

调整大小时Python OpenCV图像打乱[重复]

调整背景图像大小以适合 div [重复]