NodeJS 调用 ImageMagick
TIP
本教程讲的是用 homebrew 安装 ImageMagick,用 Nodejs 调用 ImageMagick。
1.在 MAC 上安装 homebrew
https://brew.sh/index_zh-cn.html
2.用 homebrew 安装 ImageMagick
brew install ImageMagick
安装完成后可以在终端里输入 convert,如果跳出来一堆说明,则安装成功
3.使用 nodejs 来调用
这里我演示三种调用的方式:
3.1 命令行
http://www.imagemagick.org/script/command-line-tools.php
在终端里的写法 此处的 67x57 表示宽度 67 像素,高度 57 像素。 还可以用%的写法,如 67%x57%。
convert -resize 67x57 input_pic_path output_pic_path
我这里使用 nodejs 创建子进程来执行我们的命令
var exec = require("child_process").exec;
var cmdStr = "convert -resize 67x57 input_pic_path output_pic_path";
exec(cmdStr, function (err, stdout, stderr) {
if (err) {
console.log("error: " + stderr);
} else {
console.log("success: " + stdout);
}
});
3.2im 模块
https://www.npmjs.com/package/imagemagick
im 模块是 Imagemagick 官方的调用模块,但是已经很久没有更新过了,而且以后也不会更新
var im = require("imagemagick");
im.convert(
["input_pic_path", "-resize", "25x120", "output_pic_path"],
function (err, stdout) {
if (err) throw err;
console.log("stdout:", stdout);
}
);
3.3gm
https://www.npmjs.com/package/gm
它支持 GraphicsMagick 和 ImageMagick,并且还在持续更新中,我建议使用这种方法,因为可以报 bug。
var gm = require("gm").subClass({
imageMagick: true,
});
gm("input/Desert.jpg")
.resize(240, 240)
.noProfile()
.write("output/Desert.jpg", function (err) {
if (!err) console.log("done");
});