[英]Node.js GraphicsMagick - Compose 2 images together with position and dimensions
[英]Tile four images together using Node.js and GraphicsMagick
我有四张256x256像素:a.jpg,b.jpg,c.jpg和d.jpg。 我想将它们合并在一起以产生2x2马赛克图像。 生成的图像也应为256x256像素。
像这样:
+---+---+
| a | b |
+---+---+
| c | d |
+---+---+
使用普通的GraphicsMagick和命令行可以完成
gm convert -background black \
-page +0+0 a.jpg \
-page +256+0 b.jpg \
-page +0+256 c.jpg \
-page +256+256 d.jpg \
-minify \
-mosaic output.jpg
但问题是,如何在Node.js中使用GraphicsMagick来做到这一点?
gm('a.jpg')
.append('b.jpg')
.append('c.jpg')
.append('d.jpg')
.write('output.jpg', function (err) {})
// Produces 1x4 mosaic with dimensions 256x1024 px, not what I wanted
找到了解决方案! 似乎gm
的公共API没有为我需要的东西提供任何适当的方法。 解决方案是使用不那么公开的.in
方法,这样就可以插入自定义的GraphicsMagick参数。
下面的代码包含四个256x256图像,在512x512画布上将它们合并为2x2网格,使用快速线性插值将大小减半为256x256,并将结果保存到output.jpg。
var gm = require('gm');
// a b c d -> ab
// cd
gm()
.in('-page', '+0+0') // Custom place for each of the images
.in('a.jpg')
.in('-page', '+256+0')
.in('b.jpg')
.in('-page', '+0+256')
.in('c.jpg')
.in('-page', '+256+256')
.in('d.jpg')
.minify() // Halves the size, 512x512 -> 256x256
.mosaic() // Merges the images as a matrix
.write('output.jpg', function (err) {
if (err) console.log(err);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.