2013-10-28 18 views
2

나는 이미지 프로세싱 API를 만들고있다. 이미지에 FFT를 계산하는 예제를 작성했습니다. 이 예제는 로컬에서는 실행되지만 Heroku에는 실패 (오류는 발생하지 않지만 출력은 없음)합니다.ImageMagick에서 FFTW with Heroku

제 코드에 ImageMagick이 FFTW과 함께 설치되어야합니다. Heroku에서 할 수있는 방법이 있습니까? 아니면 내 앱의 새로운 공급자를 찾아야 만한다.

var gm = require('gm').subClass({ imageMagick: true }); 
var im = require('imagemagick'); 
exports['fft'] = function (req, res, next) { 
    var image = __dirname + '/' + req.query.image; 
    var image_out = __dirname + '/tmp/output-0.png'; 
    im.convert([image, '-fft', './tmp/output.png'], function(req, resp, next){ 
    im.convert([image_out, '-auto-level', '-evaluate', 'log', '100000', './tmp/output-0.png'], function (req1, resp1, next1){ 
     var base = gm(image_out); 
     write(base, res, next); 
    }); 
    }); 
} 

답변

2

몇 가지 옵션이있다. 하나는 Heroku NodeJS buildpack을 수정하고 ImageMagick을 다운로드하고 컴파일하는 데 필요한 스크립트를 추가하는 것입니다.

https://devcenter.heroku.com/articles/buildpacks#using-a-custom-buildpack

둘째로, 당신은 convert 또는 IM의 다른 부분을 확인하고, 존재하지 않는 경우 설치 스크립트를 실행 exec를 사용할 수 있습니다.

var exec = require('child_process').exec; 

    exec('convert', function(error, stdout, stderr) { 
    if (error) { 
     exec('./install_script', function(error, stdout, stderr) { 
     if (!error) { 
      initApp(); 
     } 
     }); 
    } else { 
     initApp(); 
    } 
    }); 

설치 스크립트에 관해서는 take a look at this link; 난 그만큼의 일을 (npm install에 컴파일)에 사용하고 있지만, 나는 그것을 Heroku 컴파일됩니다 확인할 수 있습니다.

이 예제에서 나는 이 아니며make install이고 전역 적으로 바이너리를 사용할 수 있음에 유의하십시오. Heroku의 초기화 시점에서 이것이 가능한지 확실하지 않습니다. 그렇지 않다면, node-imagemagick이 바이너리 경로를 지정하거나 buildpack 경로를 지정할 수 있는지를 알 수있다.