Я вызываю скрипт imagemagick через node.js, и команда не работает, но я не могу понять, почему.
Упрощенный пример того, что я пытаюсь сделать:
var spawn = require('child_process').spawn,
ls = spawn('convert', ['-size', '168x45', 'xc:transparent', '-draw', '"image over 0,0 0,0 \'/path/to/img1.png\'"', '/path/to/out.png']);
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
Если я выполню эту точную команду (изменились только пути, поскольку они абсолютные), я получу на stderr:
"convert: non-conforming drawing primitive definition `image over 0,0 0,0 '/path/to/img1.png'' @ error/draw.c/DrawImage/3145."
Что, по мнению некоторых форумов, обычно означает, что IM не может открыть изображение из-за неверного пути и т. Д. Теперь странно то, что если я изменю convert
на echo
и добавлю convert
Я получаю следующую команду:
convert -size 168x45 xc:transparent -draw "image over 0,0 0,0 '/path/to/img1.png'" /path/to/out.png
, который отлично работает при запуске напрямую из bash.
Есть идеи?
больше информации:
- Я только что попробовал это из каталога изображения, и удалил путь (так что это
image over ... img1.png
), и я получаю ту же ошибку.
- работает
pwd
так же дает мне соответствующий каталог