Ao tentar ler dados em Node. js de um processo filho ImageMagick, ele sai corrompido. Um caso de teste simples seria o seguinte: Espero que seja o equivalente à linha de comando converter ./test. jpg - gt test2.jpg que não escrever o arquivo binário corretamente. Originalmente havia um problema com a opção maxBuffer sendo muito pequena e resultando em um arquivo truncado. Depois de aumentar isso, o arquivo agora aparece um pouco maior do que o esperado e ainda corrompido. Os dados do stdout são necessários para enviar sobre HTTP. Qual seria a maneira correta de ler esses dados a partir do ImageMagick stdout perguntado May 28 11 at 20:09 Se timeout for maior que 0, em seguida, ele irá matar o processo filho se ele executa mais de tempo limite milissegundos. O processo filho é morto com killSignal (padrão: SIGTERM). MaxBuffer especifica a maior quantidade de dados permitida em stdout ou stderr - se esse valor for excedido, o processo filho será morto. Portanto, se sua imagem estiver acima do tamanho do buffer padrão de 2001024 bytes, sua imagem será corrompida como mencionado. Eu era capaz de fazê-lo funcionar com o seguinte código: Aqui eu usei spawn para obter um stdout streamable, então eu usei um Writeable Stream para escrever os dados em formato binário. Apenas o testei e pude abrir a imagem resultante de test2.jpg. EDIT. Sim, você pode usar isso para enviar o resultado sobre HTTP. Heres um exemplo de me downsizing uma imagem com converter, em seguida, postar o resultado para o glowfoto API: answer May 28 11 at 20:57 Obrigado, it39s true Eu perdi completamente a opção maxBuffer, mas doesn39t parece resolver a corrupção. Se você ampliar isso com o meu exemplo o arquivo resultante não é muito pequeno, mas ainda corrompido. Seu exemplo funciona, mas eu realmente preciso fazer mais com os dados do que canalizá-lo diretamente para outro arquivo. Mais especificamente, eu precisaria escrevê-lo em uma resposta HTTP usando a estrutura expressa, por exemplo. Ndash Daniel Cremer May 28 11 at 22:06 Daniel Eu só tentei, mudando a linha de spawn para. Var convert spawn (39convert39, 39test. jpg39, 39-resize39, 395039, 39-39) e obteve um arquivo JPEG de trabalho reduzido 50. Tente atualizar sua postagem com o que você tem agora. Ndash onteria Maio 28 11 às 22:12
No comments:
Post a Comment