imagemagick:遇到错误:传入缓冲区对象时写入EPIPE

时间:2014-09-06 06:21:51

标签: node.js stream imagemagick buffer graphicsmagick

目前正在编写基于node imagemagick library的基于节点的实用程序以接收流并将另一个流输出到STDOUT:

im = require('imagemagick')
request = require("request")

sampleImage = "http://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg"

request.get(sampleImage, (err, res, body) ->

    prefix = "-"

    switch (res.headers['content-type'])
        when "image/jpeg"
            prefix = "jpg:-"
        when "image/png"
            prefix = "png:-"

    taskHash = {
        srcPath: prefix
        srcData: body
        dstPath: -
        height: 100
    }

    callback = (err, stdout, stderr)->
        if err
            console.error(err)
            process.exit(1)
        console.log(stdout)

    im.resize(taskHash, callback)

)

收到以下错误:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: write EPIPE
  at errnoException (net.js:904:11)
  at Object.afterWrite (net.js:720:19)

已经注意到here讨论了类似的错误,但我认为这是一个单独的案例,因为我没有使用graphicsmagick库。如果不同时安装imagemagick和graphicsmagick,是否无法使用缓冲区?

1 个答案:

答案 0 :(得分:0)

node-imagemagick需要两件事:

  • Node.js的
  • ImageMagick;)

您必须安装缺少的库(例如,对于Ubuntu):

  

sudo apt-get update

     

sudo apt-get install imagemagick --fix-missing

它将解决您的问题