在node.js中合并多个具有透明度的png图像

时间:2014-03-16 18:25:57

标签: node.js png graphicsmagick

我使用此代码将多个图像合并为一个,但透明度在结果文件中消失了。背景是纯黑色。

gm.in('convert').in('-size', '200x100')
.in('xc:transparent')
.in('-page', '+0+0').in('image1.png')
.in('-page', '+100+0').in('image1.png')
.in('-flatten')
.write('result.png', function (err) {
    if (err) console.log(err);
})

我也尝试过:

.in('background', 'transparent')

.in('background', 'black')
.in('transparency', 'black')

知道怎么做吗?

3 个答案:

答案 0 :(得分:0)

http://www.graphicsmagick.org/FAQ.html#how-can-i-add-a-matte-layer-to-my-image

您需要使用复合命令。

gm.prototype.compose = function(operator) {
   this.command('composite'); // need to use composite over the node gm default convert
   return this.out("-compose", operator);
};


gm....
.compose('CopyOpacity').

答案 1 :(得分:0)

对于那些被这个讨论搞糊涂的人。通用汽车继续开发,但在github的分支下。发起人未能使npm保持最新状态。只需将最新的fork直接分配到node_modules。

答案 2 :(得分:0)

你可以试试这个..

gm.in('convert').in('-size', '200x100')
  .in('-page', '+0+0').in('image1.png')
  .in('-page', '+100+0').in('image1.png')
  .in('-background', 'none')
  .write('result.png', function (err) {
     if (err) console.log(err);
  })