我正在尝试编写一个javascript函数来根据给定区域(或者在我的情况下(有点不准确)“平均尺寸”)调整图像大小,因为这更容易思考。我想要的不是输入最大高度和宽度,而是以最大面积进给,以便长或窄的图像在视觉上看起来大小大致相同。
不过,我真的很困惑它的数学方面......只是如何逻辑它,因为我最近没有做太多数学。
基本上,给定长宽比,我想确定一个区域内的最大尺寸。
像这样的事情:
function resizeImgByArea(img, avgDimension){
var w = $(img).width();
var h = $(img).height();
var ratio = w/h;
var area = avgDimension * avgDimension;
var targetHeight //something involving ratio and area
var targetWidth //something involving ratio and area
$(img).width(targetWidth);
$(img).height(targetHeight);
}
不确定这是否是这里的主题,但我无法思考。
听起来您想将缩略图的像素限制为尽可能接近所有其他缩略图的平均区域,对吗?
基本上,给定原始图像的高宽比和目标区域 A:
h * w = original image's pixel size (let's got with 640x480 = 307,200 pixels)
A = maximum number of pixels allowed (let's go for 100x100 = 10,000 pixels)
307,200 / 10,000 = 30x reduction
original aspect ratio = 640 / 480 = 1.3333 : 1
要计算新缩略图的 x/y 大小:
newX * newY = 10000
newX = newY * 1.333
(newY * 1.333) * newY = 10000
newY^2 * 1.333 = 10000
newY^2 = 10000 / 1.333
newY^2 = 7502
newY = 86.6 -> 87
newX = 87 * 1.333 = 115.97 -> 116
116 x 87 = 10,092 pixels
如果我们对缩略图大小进行四舍五入,我们将得到 86x114 = 9,804 像素
所以...要将 640x480 图像转换为标准的 10,000 左右像素大小,您需要一个高度为 86-87 宽度为 114-116 的新图像大小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)