Chinaunix首页 | 论坛 | 博客
  • 博客访问: 711808
  • 博文数量: 176
  • 博客积分: 2548
  • 博客等级: 少校
  • 技术积分: 1749
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-29 16:36
个人简介

爱咋咋地

文章分类

全部博文(176)

文章存档

2024年(1)

2023年(17)

2022年(19)

2021年(3)

2020年(1)

2018年(1)

2017年(1)

2014年(1)

2013年(4)

2012年(11)

2011年(19)

2010年(22)

2009年(71)

2008年(5)

分类: LINUX

2009-05-22 20:51:39

今天在移植ImageMagick++ 时遇到了下面的错误
“NoDecodeDelegateForThisImageFormat”
 
移植方式是,只把要用的 libMagickCore.so.2  libMagick++.so.2  libMagickWand.so.2 和 libjpeg.so.62 拷贝过去,运行程序,后出现"NoDecodeDelegateForThisImageFormat"错误。
最初以为是so动态库没有拷全,用ldd查看,发现都是全的,程序在原来的开发服务器是能用的(开发服务器是从源码安装的)。
 
 
“spcoder,
If you update the ImageMagick env variables in ~/rminstall-1.1-0/scripts/setenv.sh to read as the following, it will enable the libraries:
  1. IMAGEMAGICK ENV #####
    export MAGICK_HOME=”/opt/rminstall-1.1-0/common”
    export MAGICK_CONFIGURE_PATH=”/opt/rminstall-1.1-0/common/lib/ImageMagick-6.3.6/config:/opt/rminstall-1.1-0/common/share/ImageMagick-6.3.6/config”
    export MAGICK_CODER_MODULE_PATH=”/opt/rminstall-1.1-0/common/lib/ImageMagick-6.3.6/modules-Q16/coders/”
    I get a large set of formats returned after making this updating and re-exporting these, when running your test command:
    $ identify -list format
    Best,
    Mark ”

应该是说 "环境变量"的事情 ,他说要设置下环境变量,并用identify测试(这句很关键)。

我运行了一下identify -list format 确实什么格式信息也没有。

没办法hack 一下吧,在开发机上用

strace identify -list format >ImageMgick.log 2>&1

分析生成的log文件,里面有去到/usr/local/lib/ImageMagick-6.5.2/modules-Q16/coders这个目录下读取文件的记录。进去以后发现里面都是coders。原来它是需要这些文件啊。把这个目录都拷贝到目标机器上,然后看上面这些环境变量中有个:MAGICK_CODER_MODULE_PATH

把它export 出来(export MAGICK_CODER_MODULE_PATH=

再运行,OK啦。

Thank Strace!!!!!

后记:在用ImageMagick++ 中的Magick++ library 创建缩略图的时候,发现在默认情况下调用Image::resize(Geometry ),他总是按照原图的比例来缩放,也就是说如果原图是800x600的图片,我设置的缩略图尺寸为100x100的话,那么生成的缩略图的尺寸为100x75 ,也就是说是按照原图的宽高比来缩放。经查找后发现,如果想要100x100的缩略图的话,需要调用Geometry对象的aspect()方法,并把传入ture参数:Geometry::aspect(true),然后再去调用resize(Geometry)就可以了。
 
为了找这个破东西,找到半夜两点,差点以为是Magick++不支持这个方法,郁闷
 
 
另外:
在编译的时候遇到了这种情况,在一台机器上面根本一点X-window的东西都没有,所以直接configure的时候jpeg,png 什么的都显示OK。但在另一台机器上面,libjpeg.so 和libpng.so装得好好的,但就是显示
JPEG v1 --with-jpeg=yes no (failed tests)” ,郁闷,最后没办法去debug了configure,后来发现是因为这台机器上面安装可X-window的头文件,而Imagemagick++模式是--with-x的,所以configure在前面测试的时候发现有X的头文件所以就添加了X的编译选项 -lX11 ,但因为只有头文件并没有动态链接库(so)文件,所以在对jpeg测试的时候链接是永远不会成功的,因为ld会报“找不到libX11.so”的错误。
因此解决方法很简单,在configure时带上 --without-x 选项就一切OK了
阅读(6682) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~