Respondendo minha própria pergunta
Passei dois dias vasculhando as bibliotecas gráficas do Node.js.
node-canvas
- Eu tentei primeiro porque estou bastante familiarizado com
<canvas>
API. É uma grande vantagem para uma biblioteca.
- requer Cairo, que não tem um download fácil do Windows. Eu encontrei na distribuição GTK + embora.
- além disso, ele precisa que o código de ligação da biblioteca nativa seja compilado na instalação do módulo. Ele usa o Node-Waf que ainda não foi portado para o Windows.
gm
- maduro
- funciona no Windows sem problemas
- documentos estão ok, mas não completos: eu tive que pesquisar o código-fonte para descobrir qual API está disponível
- infelizmente, não há uma maneira fácil de combinar imagens com gm. Talvez haja alguma maneira de conseguir isso, mas eu não encontrei depois de duas horas gastas com isso.
node-imagemagick
- O repo oficial tem poucos comandos básicos do ImageMagick cobertos, mas usei esse fork (bom que o NPM pode extrair bibliotecas diretamente dos repositórios git). Tem ligações para
montage
fazer exatamente o que preciso.
- ImageMagick é bastante lento , embora funcione no Windows.
Node-Vips
- Grande vantagem: ele usa uma incrível biblioteca VIPS com a qual estou familiarizado. VIPS é muito rápido e otimizado para imagens grandes. É muito inteligente na utilização de recursos de hardware: se sua máquina tiver muita RAM, ela fará todo o processamento na memória, mas mudará para caches de disco rígido se a memória for escassa ou necessária para outros aplicativos.
- da mesma forma que o node-canvas, ele requer o Node-Waf, portanto ainda não está disponível para Windows.
Também olhei para outras bibliotecas da lista, mas a maioria delas é muito imatura ou não se adequa ao meu caso de uso. Eu realmente gostaria de tentar migrar para o Node-Canvas ou Node-Vips quando o Node-Waf for portado para o Windows, mas até então vou me limitar ao node-imagemagick.