问题:
C++下,用ImageMagick++读取ico文件,由于后台存储都是以id形式作为文件名,读取时候报错:
Magick++:NoDecodeDelegateForThisImageFormat,但是在id后面加上后缀ico,就可以运行。
解决办法:
http://www.imagemagick.org/discourse-server/viewtopic.php?t=14531
一开始参考了http://blog.chinaunix.net/uid-174325-id-1743981.html 的解决办法,导入MAGICK_CODER_MODULE_PATH环境变量,发现解决不了问题。进入ImageMagick++安装目录下的lib/ImageMagick-6.7.6/modules-Q16/coder文件发现是个空文件,猜测是make install的时候没configure这个coder,重新编译安装,把–with-modules打上,coder下有文件了。重新编译demo,设置环境变量,发现还是不能解决问题。并且unset了环境变量后,所有的图片都不能decode了。
结论:与MAGICK_CODER_MODULE_PATH环境变量无关,之前coder下为空的话不需要MAGICK_CODER_MODULE_PATH环境变量,是因为源码安装打出来的库默认已经把coder打进来了,所以不需要环境变量也可以直接read进图像。
解决办法是 :calling magick() b4 calling read(blob)
try {
image.magick("ico");
// Read a file into image object
image.read( "logo" );
}
解决问题的过程本来想从Magick++的源代码看是哪里出问题,无奈还是功力不够23333333,面向google编程,google大法好。;)