php Imagemagick的安装
时间:2009-04-03 来源:kinganeng
ImageMagick 是一款很强大的图片处理软件,可以创建、编辑、压缩图片,转换图片的格式,支持的格式多达100种以上,包括 DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, 和 TIFF. 可以调整大小、颜色、分辨率,添加各种动态效果,或者在图片上添加文字、线条、标记等。它可以作为一种单独的软件使用,在Linux终端直接用命令操作,也为PHP等应用提供接口,提高和丰富应用的图片处理能力,imagick则为PHP应用支持ImageMagick提供一个必需的容器(wrapper)。
ImageMagick是Omeka必需的,没有它,在omeka powered sites上上传图片时会报错:ImageMagick is not properly configured.Please check your settings and then try again.
安装ImageMagick很简单,直接参照ImageMagick上的instructions就可以,难点是安装imagick。
这句话会引起误解, Omeka报错的原因不是因为没有安装imagick, 其实很简单,是因为没有正确配置ImageMagick的convert函数在服务器上的绝对路径,eg:我的ImageMagick安装路径是:/usr/local/ImageMagick,那么convert的绝对路径是:/usr/local/ImageMagick/bin/convert. 这就是在Omeka的settings->general settings->Path To Convert项中所填的值.
虽然Omeka是基于LAMPP架构的, 但它却并未倚赖于LAMPP本身对ImageMagick的支持,即用PHP的imagick模块来联接PHP和ImageMagick,而是直接定位到ImageMagick的命令. 可惜的是Omeka的安装说明简单得可怜,只是说需要Omeka的支持,却没有详细地说明ImageMagick是怎么支持Omeka的. 会让我这种入门者误入歧途, 好在我从apache的error_log中获得了一些信息,推测出了原因之所在.但还是免不了走了许多的弯路.
然而,仅仅只是按照ImageMagick官网上的安装方法还是远远不够的,还需要很多其它的支持库,才能使ImageMagick正常运作,这一点也是我从apache的error_log中的报错信息:no decode delegate for this image format 中得知的, 也是Omeka的官网上没有说明的. ImageMagick for Omeka的安装将会写在以后的博文中, 下面,还是关于ImageMagick+imagick+PHP的安装:
我开始时参照了以下安装方法:
http://info.52z.com/html/20419.html
http://bbs.unixtech.cn/read.php?tid=1229
http://doc.linuxpk.com/1864.html
http://hi.baidu.com/billdkj/blog/item/998373b336b477a0d8335a0d.html
这些安装方法都需要重新编译PHP,而且其中的过程很混乱(或者是作者懒得把详细的过程准确无误地写出来),试过多次,花了3个小时也没装好,让人极度郁闷。ImageMagick和PHP的官网上,俺能找得到的Manual都超级简单,没有可操作性。
刚刚发现了某位老兄的一篇帖子,不得不佩服这个老外的语言能力,上面的4个链接全部是中文的,我却看得脑子里面拧成了天津麻花,仅凭我这菜鸟的经验试了又试无论如何也不成功,看了这位老兄的E文帖子,我觉得脑子里的天津麻花瞬时变成了清水挂面,真想立马就杀到单位,扑在服务器上试验一番!直觉应该会成功。
这里提到的方法,不是把imagick编译成静态module,不用重新编译PHP,而是直接把imagick编译成imagick.so文件,再在php.ini里用动态加载的方法。写得简单明了,但凡涉及到一些实际操作细节该提到的一定说得清楚明白。
这里还有一位老兄的帖子,思路和上面的老外一样,下面是他的代码,我整理了下:
tar xvf imagick-2.2.0.tgz
cd imagick-2.2.0
/usr/local/php5/bin/phpize
./configure –with-php-config=/usr/local/php5/bin/php-config
make
make install
编辑php.ini,加上下面两行:
extension_dir = “/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/”
extension = “imagick.so”