Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何为graphicsmagick配置JPEG代理?_Node.js_Imagemagick_Jpeg_Graphicsmagick - Fatal编程技术网

Node.js 如何为graphicsmagick配置JPEG代理?

Node.js 如何为graphicsmagick配置JPEG代理?,node.js,imagemagick,jpeg,graphicsmagick,Node.js,Imagemagick,Jpeg,Graphicsmagick,我想将图像裁剪到指定的像素区域。我想使用来自的gm模块。 我正在运行Linux Mint 13和node.js v0.9.4pre 我遇到了一个听起来像graphicsmagick不知道JPEG的错误: Error: Command failed: gm convert: No decode delegate for this image format (./assets/images/temp/2aadd4379e1cf2b59429994270db2a8a.jpg) 果然,gm conve

我想将图像裁剪到指定的像素区域。我想使用来自的
gm
模块。 我正在运行Linux Mint 13和node.js v0.9.4pre

我遇到了一个听起来像graphicsmagick不知道JPEG的错误:

Error: Command failed: gm convert: No decode delegate for this image format (./assets/images/temp/2aadd4379e1cf2b59429994270db2a8a.jpg)
果然,
gm convert-list formats
不显示jpeg委托:

<snip>
     IPTC P  rw-  IPTC Newsphoto
 IPTCTEXT P  rw-  IPTC Newsphoto text format
IPTCWTEXT P  rw-  IPTC Newsphoto text format
      K25 S  r--  Kodak Photo RAW
<snip>
以下是我用来安装jpeg库和graphicsmagick的命令:

$ cd ~/source
$ wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
$ tar -xzvf jpegsrc.v6b.tar.gz
$ cd jpeg-6b
$ ./configure
$ make
$ sudo make install

$ cd ~/source
$ wget ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/1.3/GraphicsMagick-1.3.18.tar.xz
$ tar -xJvf GraphicsMagick-1.3.18.tar.xz
$ cd GraphicsMagick-1.3.18
$ ./configure
$ make
$ sudo make install

$ npm install gm

我告诉gm库使用imagemagick二进制文件而不是默认的graphicsmagic二进制文件,从而找到了一个成功的解决方法:

var gmagic   = require('gm');
var imagic   = gmagic.subClass({imageMagick: true});
...
imagic(cfg.tmpPath)
.crop(h,w,x0,y0)
.write(cfg.croppedPath, function(err, stdout, stderr, command){
  if(err){ next(err) }
  else { next(null, raft) };
});

鉴于您使用的是Linux Mint,GraphicsMagick查找libjpeg的最佳解决方案是安装libjpeg开发包(libjpeg dev),重新运行GraphicsMagick配置脚本,重新生成并安装。请确保为支持您感兴趣的其他格式的库添加-dev包


如果要使用从源代码安装的libjpeg,则需要将选项LDFLAGS=-L/usr/local/lib CPPFLAGS=-I/usr/local/include添加到GraphicsMagick配置脚本调用中。请注意,Linux Mint附带的libjpeg可能与jpeg 6b不同(例如jpeg 8或libjpeg turbo),最好不要在系统上有重复的库。

我意识到这完全是一个Linux问题,但这可能会帮助某些人

在Mac电脑上,我使用了自制软件。只需运行这3行代码(chown行对我来说是必需的,您可能不需要先尝试):

如果它抱怨jpeg库未链接,请运行
brew doctor
+按照说明链接任何缺少的“小桶”

如果事情搞砸了,你想重新开始(见):

var gmagic   = require('gm');
var imagic   = gmagic.subClass({imageMagick: true});
...
imagic(cfg.tmpPath)
.crop(h,w,x0,y0)
.write(cfg.croppedPath, function(err, stdout, stderr, command){
  if(err){ next(err) }
  else { next(null, raft) };
});
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
sudo chown -R $USER:admin /usr/local
brew install graphicsmagick
brew uninstall imagemagick graphicsmagick libpng jpeg
brew cleanup -s
brew install graphicsmagick