我需要通过 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。我做错了什么?
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;
});
可以完成这项工作。它将图像的大小调整为给定的宽度和高度,与原始尺寸无关
使用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