Magick ++ NoDecodeDelegateForThisImageFormat

时间:2013-12-07 17:36:35

标签: imagemagick magick++

我已经搜索了我的问题并发现了许多页面,但它们都没有完全相同的味道,我不能让我的问题消失。

我有一个程序,它使用Magick ++并在我的电脑上正常工作,但它在我试图运行代码的另一台计算机上失败。一个最小的例子就是:

#include <iostream>
#include <Magick++.h>

int main(){
    Magick::Image im;
    im.read( "/fullpathtoimage.jpg" );
    std::cout<< im.columns() <<"\n";
    return 0;
}

(当然“/fullpathtoimage.jpg”是一个有效的图像)。

这引发了一个例外:

terminate called after throwing an instance of 'Magick::ErrorMissingDelegate'
  what():  ImageMagick: NoDecodeDelegateForThisImageFormat `/fullpathtoimage.jpg' @ constitute.c/ReadImage/503
Aborted

这个问题的其他报告基本上说他们没有jpeg的委托,应该安装libjpeg等,但是在运行'convert'时他们遇到了同样的错误。但是,当我做的时候

./convert /fullpathtoimage.jpg temp.png

它完美运行。做

./identify -list configure

列出其中

DELEGATES      bzlib mpeg fontconfig freetype jng jpeg pango png ps x xml zlib
LIBS           -lfreetype -ljpeg -lpng12 -lfontconfig -lXext -lXt -lSM -lICE -lX11 -lbz2 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lxml2 -lz -lm

./identify -list format | grep JPEG

给出

  JNG* rw-   JPEG Network Graphics
 JPEG* rw-   Joint Photographic Experts Group JFIF format (62)
PJPEG* rw-   Joint Photographic Experts Group JFIF format (62)

所以,一切似乎都很好,所有二进制文件都有效,只是我的代码没有。

我安装的版本是ImageMagick-6.8.7-8,我是从源代码构建的,因为我在机器上没有root访问权限,我将它安装到我家中的某个位置(使用./configure - prefix = / home / ...)。我检查了是否存在将我的程序与错误的ImageMagick链接的问题(因为还有一个较旧的系统),但ldd显示一切都很好,即程序与我安装的程序链接,如我所愿,并运行ldd on转换显示它与完全相同的库链接。

0 个答案:

没有答案