I am trying to resize an image and write back to file system using gm node. However when I try to write resized image it gives following error:
Error: Command failed: gm convert: Option '-size' requires an argument or argument is malformed.
at ChildProcess.onExit (C:\Users\AndroidStudioProjects\node_modules\gm\lib\command.js:301:17)
at emitTwo (events.js:125:13)
at ChildProcess.emit (events.js:213:7)
at ChildProcess.cp.emit (C:\Users\AndroidStudioProjects\node_modules\gm\node_modules\cross-spawn\lib\enoent.js:40:29)
at maybeClose (internal/child_process.js:927:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5) code: 1, signal: null }
Code I am trying to run is:
gm("C:/Users/Desktop/file.jpg", "file.jpg")
.resize(500)
.write("C:/Users/Desktop/sfile.jpg", function(err) {
if (err) console.log("Resize write error", err);
});
GraphicsMagick is seemed to be installed and working from command line using command :
$ gm convert file.jpg -resize 64x64 file.jpg.conv
The following code also works fine :
const resize = (filepath: string, output: string, width: number = 256, height: number = 256) => {
const proc = spawn("gm", ["convert", filepath, "-resize", `${width}x${height}`, output]);
return new Promise((resolve, reject) => {
let err = "";
proc.stderr.on("data", chunk => {
err += chunk.toString();
});
const onEnd = (code: number) => (code ? reject(err) : resolve());
proc.on("close", onEnd);
proc.on("end", onEnd);
});
};
resize("C:/Users/Desktop/file.jpg", "C:/Users/Desktop/sfile.jpg");
So, I know for sure that graphicsmagick is working fine. I just cannot understand why it complains for -size in case of write?