По user Pirijan:
Маска ничего на своем собственном не делать, это довольно бесполезно на самом деле. Он просто берет предоставленное изображение маски и использует его для записи, защищая маскированные пиксели от последующей модификации, если на изображении выполняется дополнительная обработка/рисование.
Похоже, что .mask()
это полезно только при использовании вместе с другой командой.
Документация для GraphicsMagick может быть довольно запутанной, и я уверен, что существует несколько способов маскировки изображения. Вот как я это делаю:
function mask(img, mask){
gm()
.command("composite")
.compose("CopyOpacity")
.in(img, mask, "-matte")
.write(img, function(err){
if(err){
console.log(err)
} else {
console.log("Success! Image " + img + " was masked with mask " + mask);
}
});
}
Однако это не использовать альфа-канал из mask
, вместо этого он работает с черно-белой маской, без альфа-канала. Он также требует, чтобы и img
, и mask
имели одинаковые размеры.
Он работает, копируя значение каждого пикселя в mask
на альфа-канал img
. Опция -matte
указывает gm на создание альфа-канала на img
, если он еще не установлен.
Поскольку узел-гм использует debug library from visionmedia вы можете включить отладочный вывод в консоль, установив переменную окружения DEBUG=gm
, например, так (в Unix/OS X):
DEBUG=gm node index.js
Это напечатает точные команды что node-gm вызывает.