我想将图像裁剪到指定的像素区域。我想使用gm
模块来自https://github.com/aeckmann/gm https://github.com/aheckmann/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>
GraphicsMagick 有一个ftp 文件夹 ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates/包含代表的源代码(带有readme ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates/README.txt.) 所以我下载、解压并安装jpegsrc.v6b.tar.gz
正如我的源文件附带的安装文档中所建议的那样。
我很确定 jpeg 库已安装cjpeg
and djpeg
也许还有其他东西。然而没有make uninstall
或体现我发现的。我还没有尝试在这个版本上安装任何其他版本的 jpeg 库。安装 jpeg 库后,我卸载并重建了graphicsmagick。
尽管如此,仍然没有列出 JPEG 代表gm convert -list formats
.
我正在从 Imagemagick 迁移,即使没有安装此库,调整 jpeg 大小也不会出现任何问题。
我必须做什么才能让graphicsmagick 处理jpeg?
这是我调用 gm 的方式:
var gmagic = require('gm');
gmagic(cfg.tmpPath)
.crop(h,w,x0,y0)
.write(cfg.croppedPath, function(err){
if(err){ done(err) }
else { done(null, cfg.croppedPath) };
});
以下是我用来安装 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