等效的nodejs gm库是什么https://github.com/aheckmann/gm命令到此 imagemagick cli 命令?
imagemagick cli 命令在透明背景上分层多个图像:
convert -size 669x122 xc:none img1.jpg -geometry +223+0 -composite
img2.jpg -geometry +251+46 -composite
img3.png -geometry +283+46 -composite
img4.jpg -geometry +446+61 -composite
img5.jpg -geometry +223+61 -composite
img6.jpg -geometry +0+61 -composite
output.png
gm 库命令是:?
const gm = require('gm').subClass({
imageMagick: true // im binaries are already installed on lambda functions
})
gm()
.out('-size 669x122 xc:none
img1.jpg -geometry +223+0 -composite
img2.jpg -geometry +251+46 -composite
img3.png -geometry +283+46 -composite
img4.jpg -geometry +446+61 -composite
img5.jpg -geometry +223+61 -composite
img6.jpg -geometry +0+61 -composite
output.png')
.write()
我是 Nodejs 新手,这将在 aws lambda 函数上运行。 Imagemagick 二进制文件预安装在 lambda 上。除了我最初的问题之外,我是否应该使用 exec() nodejs 功能来传递此字符串,或者使用 nodejs gm 库有什么好处?
最佳答案
从技术上讲,这不是我原来问题的答案,而是解决问题的另一种方法。最终放弃 gm npm 库并仅使用 exec()。但仍然想知道 .out 是否有效或正确。
这是 Nodejs 代码库的一部分,用于使用 imagemagick 创建多层图像。
const exec = require('child_process').exec
let command = []
for (let i = 0; i < my['images'].length; i++) {
if (i === 0) {
command.push('convert')
command.push(`-size ${my['canvas_width']}x${my['canvas_height']} xc:none`)
}
command.push(`${local}${my['images'][i]['image']}`)
command.push(`-geometry +${my['images'][i]['x']}+${my['images'][i]['y']}`)
command.push('-composite')
}
command.push(`${local}${outputImage}`)
command = command.join(' ')
console.log(command)
exec(command, (err, stdout, stderr) => {
if (err) {
next(`${err} ${stdout} ${stderr}`)
} else {
next(null)
}
})
关于node.js - Nodejs gm 库 - 如何创建多个图像按顺序分层的转换命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52433538/