首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为graphicsmagick配置JPEG委托?

如何为graphicsmagick配置JPEG委托?
EN

Stack Overflow用户
提问于 2013-04-18 23:37:58
回答 3查看 6.2K关注 0票数 4

我希望将图像裁剪到指定的像素区域。我想使用来自https://github.com/aheckmann/gmhttps://github.com/aheckmann/gm模块。我正在运行Linux 13和node.js v0.9.4pre。

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

代码语言:javascript
复制
Error: Command failed: gm convert: No decode delegate for this image format (./assets/images/temp/2aadd4379e1cf2b59429994270db2a8a.jpg)

当然,gm convert -list formats没有显示jpeg委托:

代码语言:javascript
复制
<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文件夹 (带有一个自述文件)。因此,我按照源文件附带的安装文档中的建议,下载、解锁并安装了jpegsrc.v6b.tar.gz

我很确定jpeg库安装了cjpegdjpeg以及其他东西。但是,我没有找到任何make uninstall或清单。我没有尝试过在这个版本上安装任何其他版本的jpeg库。在安装jpeg库之后,我卸载并重新构建了graphicsmagick。

尽管如此,在gm convert -list formats中仍然没有JPEG委托。

我正在从Imagemagick迁移,它在调整jpegs大小方面从来没有任何问题,即使没有安装这个库也是如此。

我应该怎么做才能得到图形化的图形来处理jpegs?

下面是我如何调用gm:

代码语言:javascript
复制
    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的命令:

代码语言:javascript
复制
$ 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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-19 14:11:46

通过告诉gm库使用imagemagick二进制文件而不是默认的图形二进制文件,我找到了一个成功的解决办法:

代码语言:javascript
复制
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) };
});
票数 5
EN

Stack Overflow用户

发布于 2013-04-25 13:37:55

考虑到您使用的是Linux,GraphicsMagick查找libjpeg的最佳解决方案是安装libjpeg开发包(libjpeg-dev)、重新运行GraphicsMagick配置脚本、重新构建和安装。一定要为支持您感兴趣的其他格式的库添加-dev包。

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

票数 2
EN

Stack Overflow用户

发布于 2015-06-17 09:24:22

我意识到这完全是Linux的问题,但也许这会对某人有帮助.

在Mac上,我用的是HomeBrew。只需运行这3行(对于我来说,chown行是必需的,您可能需要先尝试一下):

代码语言:javascript
复制
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):

代码语言:javascript
复制
brew uninstall imagemagick graphicsmagick libpng jpeg
brew cleanup -s
brew install graphicsmagick
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16094875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档