2014-01-24 5 views
1

Этот фрагмент кода используется для создания динамических изображений на основе заданных параметров высоты и ширины. Местный локатор: 3000/50/50 даст изображение шириной 50 и высотой 50..I Я использую этот код, который я получил от github. Я установил imageMagick в свою систему.Узел js dynamic images- error

var http = require('http'); 
var url = require('url'); 
var fs = require('fs'); 
var gm = require('gm'); 

var server = http.createServer(function(request, response){ 
    var url_parts = url.parse(request.url).path.substring(1).split("/"); 

    var width = parseInt(url_parts[0]); 
    var height = parseInt(url_parts[1]); 
    var max = Math.max(width, height); 

    if(!isNaN(width) && !isNaN(height)) 
    { 
     response.writeHead(200, {'content-type': 'image/png'}); 
     gm('nodejs.png'). 
      resize(max, max). 
      crop(width, height, 0, 0). 
      stream(function(err, stdout, stderr){ 
       if(err) { 
        console.log(err) 
       } 
       else { 
        stdout.pipe(response); 
       } 
      }); 
    } 
    else { 
     response.writeHead(400, {'content-type' : 'text/plain'}); 
     response.end(); 
    } 
}) 
.listen(3000); 

Это ошибка я получаю

events.js:72 throw er; // Unhandled 'error' event ^Error: spawn ENOENT at errnoException (child_process.js:980:11) at Process.ChildProcess._handle.onexit (child_process.js:771:34)

Файл nodejs.png существует в том же каталоге, что и project.What является то, что я делаю неправильно?

+0

пожалуйста, вы можете опубликовать полное сообщение об ошибке и найти строка ошибки в вашем коде? – exebook

ответ

1

Вам нужно добавить следующую строку кода .. после installign imageMagicks в системе

var gm = require('gm').subClass({ imageMagick: true }); 

Это сделал трюк, и он работает сейчас ..

2

Почти наверняка вам необходимо установить ImageMagic или GraphicsMagic. Я предполагаю, что модуль gm - это всего лишь оболочка инструментов командной строки графического управления. Поэтому, когда вы вызываете что-то вроде resize()node попытается вызвать /usr/bin/convert, который не найден, таким образом вы получите spawn child_process.

Для установки imagemagic вы можете ввести sudo apt-get install imagemagic в Ubuntu.

+0

Для окон? Как мне? –

+0

http://www.imagemagick.org/script/binary-releases.php#windows , но я не уверен, что разработчики 'gm' тестировали его под Windows. – exebook

+0

http://stackoverflow.com/questions/10098768/about-graphics-magick-for-node-error смотрите здесь – exebook