Nodejs gm 库 - 如何为多个图像创建转换命令以按顺序分层
Nodejs gm library - how to create convert command for multiple images to be layered in sequence
与此 imagemagick cli 命令等效的 nodejs gm 库 https://github.com/aheckmann/gm 命令是什么?
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 是否有效或是否正确。
这是使用 imagemagick 创建多层图像的 nodejs 代码库的一部分。
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)
}
})
与此 imagemagick cli 命令等效的 nodejs gm 库 https://github.com/aheckmann/gm 命令是什么?
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 是否有效或是否正确。
这是使用 imagemagick 创建多层图像的 nodejs 代码库的一部分。
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)
}
})