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