如何使用GM Node.js'gm composite -gravity center change_image_url base_image_url'?
如何致电gm().command()
& gm().in()
或gm().out()
实现上述目标?
答案 0 :(得分:16)
经过一个小时的挣扎,这是我的问题的解决方案:
gm composite -gravity center change_image_url base_image_url
gm()
.command("composite")
.in("-gravity", "center")
.in(change_image_url)
.in(base_image_url)
.write( output_file, function (err) {
if (!err)
console.log(' hooray! ');
else
console.log(err);
});
祝你好运!希望它对其他人也有帮助:))
答案 1 :(得分:11)
安装gm,(确保你已经安装了graphicsmagick
npm install gm
以下是将两个图像合并在一起的示例代码(使用gm.in
)
var gm = require('gm');
gm()
.in('-page', '+0+0')
.in('bg.jpg')
.in('-page', '+10+20') // location of smallIcon.jpg is x,y -> 10, 20
.in('smallIcon.jpg')
.mosaic()
.write('tesOutput.jpg', function (err) {
if (err) console.log(err);
});
答案 2 :(得分:3)
我这样做:
var exec = require('child_process').exec
var command = [
'-composite',
'-watermark', '20x50',
'-gravity', 'center',
'-quality', 100,
'images/watermark.png',
'images/input.jpg', //input
'images/watermarked.png' //output
];
// making watermark through exec - child_process
exec(command.join(' '), function(err, stdout, stderr) {
if (err) console.log(err);
});
答案 3 :(得分:2)
为什么没有人使用composite
命令? (https://github.com/aheckmann/gm)
var gm = require('gm');
var bgImage = 'bg.jpg',
frontImage = 'front.jpg',
resultImage = 'result.jpg',
xy = '+100+150';
gm(bgImage)
.composite(frontImage)
.geometry(xy)
.write(resultImage, function (err) {
if (!err) console.log('All done');
});
更新哦,我看了这个方法的来源历史。它仅在2014年可用
答案 4 :(得分:1)
如果要调整和合并的大小,可以使用以下命令:
gm()
.in('-geometry', '+0+0')
.in('./img/img1.png')
.in('-geometry', '300x300+100+200')
.in('./img/img2.png')
.flatten()
.write('resultGM.png', function (err) {
if (err) console.log(err);
});
答案 5 :(得分:0)
暂时被限制在Windows机器上的乐趣我最终通过不使用" gm"解决了这个问题。模块。出于某种原因,即使我通过其安装程序安装了graphics-magick,节点模块也拒绝在我的环境变量中找到它。但这可能与我试图用Electron.js创建一个应用程序这个事实有关(类似于Node.js,但它有"陷阱' s")。
var exec = require("child_process").execSync;
var commandArray = [
__dirname + "/bin/graphicsMagick/gm.exe", // the relative path to the graphics-magick executable
"-composite",
"-gravity",
"center",
__dirname + "/data/images/qr/logo-small.png", // relative paths to the images you want to composite
__dirname + "/data/images/qr/qr-webpage.png",
__dirname + "/data/images/qr/qr-webpage-logo.png" // relative path to the result
];
var returnValue = exec(commandArray.join(" "));
对于Windows,我认为这是正确的便携式方法。