Ответ 1
Нашел решение! Похоже, что публичный API gm
не предоставляет правильных методов для того, что мне нужно. Решение заключалось в использовании не-общедоступного метода .in
, который позволяет вставлять собственные аргументы GraphicsMagick.
Следующий код содержит четыре изображения 256x256, объединяет их с сеткой 2x2 на холсте 512x512, уменьшает размер до 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);
});