调整图像大小,保持长宽比并适合边界nodejs



我需要调整图像的大小以适应特定的尺寸。我想保持长宽比。

例如

original image:
w:634
h:975
resize to max:
w:50
h:100
result:
w:50
h:85

我没有发现任何东西可以做到这一点(计算w和h)我太笨了,自己想不出来

副驾驶建议我保持长宽比

如果你想使用包。我更喜欢用jimp编辑图片。

计算原始图像和最大尺寸的宽高比。根据比例,取最大宽度或最大高度为固定值,计算另一侧。

let 
oheight = 634, owidth = 975,
mheight = 50, mwidth = 100,
theight, twidth;

let 
oratio = owidth/oheight, // (~1.54)
mratio = mwidth/mheight, // (2)

if (mratio > oratio) {
//original image is "higher" so take the maximum height
//and calculate the width accordingly
theight = mheight;  //50
twidth = theight * oratio; //77
} else {
//original image is "wider" so take the maximum width
//and calculate the height accordingly
twidth = mwidth;
theight = twidth / oratio;
}

但是任何像样的图像处理库都会有这样的功能,你可以传入最大尺寸并定义保持长宽比,并将在内部进行这些计算…

Jimp.read('image.jpg')
.then((lenna) => {
const isHorizontal = lenna.getWidth() > lenna.getHeight();
const ratio = isHorizontal
? lenna.getWidth() / lenna.getHeight()
: lenna.getHeight() / lenna.getWidth();
const width = 375; // set the width you want
const height = isHorizontal ? width / ratio : width * ratio;
return lenna.resize(width, height).quality(60).write("image.jpg");
})
.catch((err) => {
console.error(err);
});

相关内容

  • 没有找到相关文章

最新更新