在 Node.js 中调整图像大小而无需纵横比

问题描述 投票:0回答:2

我需要通过 ImageMagick 在 Node.js 中将图像大小调整为固定大小。示例:图像 200x140、500x200 和 130x100 转换为 100x50。图像必须在没有纵横比的情况下拉伸或压缩并填充整个空间。我这样做:

var im = require('imagemagick');

var resize_options = {
    srcPath: path,
    dstPath: path,
    width: 100,
    height: 50
};
im.resize(resize_options, function (err) {
    if (err) {
        console.log(err);
        res.end('Error!');
    }
    else {
        res.end('Success!');
    }
});

但是图像仅按高度进行转换,例如 - 1440x900 转换为 80x50,而不是 100x50。我做错了什么?

javascript node.js image imagemagick
2个回答
1
投票
var im = require('imagemagick');

var width = 800;
var height = 123;
im.convert(['./in.jpg', '-resize', width + 'x' + height + '\!', './out.png'],
  function (err, stdout) {
    if (err) throw err;
  });

可以完成这项工作。它将图像的大小调整为给定的宽度和高度,与原始尺寸无关


0
投票

使用Sascha的答案,如果有人搜索此内容,您可以在选项中使用字符串并指定高度上的感叹号,如下所示

var resize_options = {
    srcPath: path,
    dstPath: path,
    width: "100",
    height: "50!",
};

因为:“为了将图像大小调整为任意尺寸,同时忽略纵横比,您可以在尺寸后附加 !,例如 100x100!” 所以在高度上加上感叹号,就会将其添加到使用的命令中,比如100x50!

https://www.digitalocean.com/community/tutorials/workflow-resizing-images-with-imagemagick

© www.soinside.com 2019 - 2024. All rights reserved.