如何在一个流中合成多个图像
How to composite multiple images in one stream
我正在尝试将多个图像合成为一个流,该流将作为响应通过管道传输。我在 https://github.com/aheckmann/gm 使用 Node.js 和 GraphicsMagick for Node。
如果我将两个图像合成到一个流中,它工作正常,对于这个例子,它按预期显示最终合成的 two/thirds。
这是我的代码:
app.get('/call_2image_stream', function(req, res){
res.writeHead(200, {'Content-Type' : 'image/png'});
var path = (__dirname + '/test_folder/happy_right.png');
var path2 = (__dirname + '/test_folder/happy_left.png');
gm(path)
.composite(path2)
.stream('png')
.pipe(res);
})
这在 Postman 中非常有效
但是当我尝试合成三张图片时,它没有按预期正确填充图片的底部。代码是这样的:
app.get('/call_3image_stream', function(req, res){
res.writeHead(200, {'Content-Type' : 'image/png'});
var path = (__dirname + '/test_folder/happy_bottom.png');
var path2 = (__dirname + '/test_folder/happy_right.png');
var path3 = (__dirname + '/test_folder/happy_left.png');
gm(path)
.composite(path2)
.composite(path3)
.stream('png')
.pipe(res);
})
我不明白为什么输出是这样的:
想出一个很好的答案写在这里:
为 Ryan Wu 呐喊!
这是我的最终代码
app.get('/final_code', function(req, res){
res.writeHead(200, {'Content-Type' : 'image/png'});
gm()
.in('-page', '+0+0')
.in(__dirname + '/test_folder/happy_right.png')
.in('-page', '+0+0')
.in(__dirname + '/test_folder/happy_left.png')
.in('-page', '+0+0')
.in(__dirname + '/test_folder/happy_bottom.png')
.mosaic()
.stream('png')
.pipe(res);
})
我正在尝试将多个图像合成为一个流,该流将作为响应通过管道传输。我在 https://github.com/aheckmann/gm 使用 Node.js 和 GraphicsMagick for Node。
如果我将两个图像合成到一个流中,它工作正常,对于这个例子,它按预期显示最终合成的 two/thirds。 这是我的代码:
app.get('/call_2image_stream', function(req, res){
res.writeHead(200, {'Content-Type' : 'image/png'});
var path = (__dirname + '/test_folder/happy_right.png');
var path2 = (__dirname + '/test_folder/happy_left.png');
gm(path)
.composite(path2)
.stream('png')
.pipe(res);
})
这在 Postman 中非常有效
但是当我尝试合成三张图片时,它没有按预期正确填充图片的底部。代码是这样的:
app.get('/call_3image_stream', function(req, res){
res.writeHead(200, {'Content-Type' : 'image/png'});
var path = (__dirname + '/test_folder/happy_bottom.png');
var path2 = (__dirname + '/test_folder/happy_right.png');
var path3 = (__dirname + '/test_folder/happy_left.png');
gm(path)
.composite(path2)
.composite(path3)
.stream('png')
.pipe(res);
})
我不明白为什么输出是这样的:
想出一个很好的答案写在这里: 为 Ryan Wu 呐喊!
这是我的最终代码
app.get('/final_code', function(req, res){
res.writeHead(200, {'Content-Type' : 'image/png'});
gm()
.in('-page', '+0+0')
.in(__dirname + '/test_folder/happy_right.png')
.in('-page', '+0+0')
.in(__dirname + '/test_folder/happy_left.png')
.in('-page', '+0+0')
.in(__dirname + '/test_folder/happy_bottom.png')
.mosaic()
.stream('png')
.pipe(res);
})