我想将图像裁剪到指定的像素区域。我想使用https://github.com/aheckmann/gm中的gm
模块。
我正在运行Linux Mint 13和node.js v0.9.4pre。
我遇到了一个错误,听起来像graphicsmagick不了解jpegs:
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 folder包含代理的源代码(readme。)所以我按照我的安装文档中的建议下载,解压缩并安装jpegsrc.v6b.tar.gz
源文件。
我很确定jpeg库安装了cjpeg
和djpeg
以及其他东西。但是,我找不到make uninstall
或清单。我还没有尝试过安装任何其他版本的jpeg库。我在安装jpeg库后卸载并重建了graphicsmagick。
但gm convert -list formats
中没有列出JPEG代表。
我正在从Imagemagick迁移,即使没有安装此库,也没有任何调整jpeg的问题。
我必须做些什么才能让图形处理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
答案 0 :(得分:5)
我通过告诉gm库使用imagemagick二进制文件而不是默认的graphmagic二进制文件找到了成功的解决方法:
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) };
});
答案 1 :(得分:2)
鉴于您使用的是Linux Mint,找到libjpeg的GraphicsMagick的最佳解决方案是安装libjpeg开发包(libjpeg-dev),重新运行GraphicsMagick配置脚本,重建和安装。请务必为支持您感兴趣的其他格式的库添加-dev包。
如果要使用从源代码安装的libjpeg,则需要将选项LDFLAGS = -L / usr / local / lib CPPFLAGS = -I / usr / local / include添加到GraphicsMagick配置脚本调用中。请注意,Linux Mint可能带有与jpeg 6b不同的libjpeg(例如jpeg 8或libjpeg turbo),最好不要在系统上安装重复的库。
答案 2 :(得分:1)
我意识到这严格来说是一个Linux问题,但也许这会对某些人有帮助......
在Mac上,我使用的是HomeBrew。只需运行这3行(chown
行对我来说是必要的,你可能想先试试):
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
sudo chown -R $USER:admin /usr/local
brew install graphicsmagick
如果它抱怨jpeg库被取消链接,请运行brew doctor
+按照说明链接任何丢失的“桶”。
如果某些事情搞砸了,你想重新开始(见https://stackoverflow.com/a/17846596/188926):
brew uninstall imagemagick graphicsmagick libpng jpeg
brew cleanup -s
brew install graphicsmagick