February 01, 2004

php+ImageMagick+imagick API Howto

php+ImageMagick+imagick API 配置指南

先去下载相关的软件:

ImageMagick 5.5.7
ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-5.5.7-15.tar.gz

imagick:A native PHP-extension to ImageMagick
wget http://pecl.php.net/get/imagick-0.9.8.tgz

logo.png
怎么你不知道ImageMagick是什么,不妨到这里看看ImageMagick的魅力
使用 ImageMagick 进行翻转、缩放大小、旋转以及更多操作
ImageMagick学习


怎么样ImageMagick比GD还强大吧,那好我们就来安装它。

我们今天要讲的就是直接使php支持ImageMagick,而不是用ImageMagick的命令行来进行图形转换。

tar ImageMagick-5.5.7-15.tar.gz
cd ImageMagick-5.5.7

./configure \
LDFLAGS="-L/usr/lib" CPPFLAGS="-I/usr/include" \
--prefix=/usr/local/ImageMagick \
--enable-shared \
--enable-lzw
make
make install

更多参数大家看编译帮助。

对了,忘了跟大家说,最好不要用redhat自带的ImageMagick-devel包,还是自己编译的好,否则你在编译php的时候会被搞死,我可是说在前头了,出了问题不要怪我没说哦:)

要加入ImageMagick针对php的API。那么我们需要两次编译php,php第一次编译后,会产生我们编译API所需的phpize这个程序。第一次编译不讲了,跟后面第二次编译基本差不多。

在php的源代码目录

1。mkdir ext/ imagick
2。然后把imagick-0.9.8.tgz解压到ext/ imagick目录下
3。运行命令phpize
4。cd php源代码根目录
5。rm configure
6。./buildconf --force #好像不加--force不让重新产生configure文件

下面就是php的第二次编译


./configure --prefix=/usr/local/php \
--with-mysql=/usr/local/mysql \
--with-imagick=/usr/local/ImageMagick
--with-apxs=/usr/local/apache/bin/apxs
make
make install

至于php的其他参数大家适当添加就行。

好了写个php的测试程序

<?php
phpinfo();
?>

imagick.png

恭喜你,安装成功了,去享受ImageMagick的巨大功能


frank发表 于February 1, 2004 07:28 PM | 回复(9) | 引用(0)
回复

baomm:
我也曾经看到这个错误,有几种可能ImageMagick或者api版本太高,另外也有可能是php版本太高的缘故,不过不是所有机器都编译不过,我的就用4.3.6编译成功,不过不少用4.3.6编译的朋友就碰到你类似的问题

Posted by: frank at May 5, 2004 07:55 PM

我按照您说的方法编译,结果出现了下列错误,不知道是什么原因:
ext/imagick/imagick.lo: In function `zif_imagick_setfontsize':
/home/php-4.3.6/ext/imagick/imagick.c:2327: undefined reference to `DrawSetFontSize'
ext/imagick/imagick.lo: In function `zif_imagick_setfontstyle':
/home/php-4.3.6/ext/imagick/imagick.c:2368: undefined reference to `DrawSetFontStyle'
ext/imagick/imagick.lo: In function `zif_imagick_setfontface':
/home/php-4.3.6/ext/imagick/imagick.c:2410: undefined reference to `DrawSetFont'
ext/imagick/imagick.lo: In function `zif_imagick_begindraw':
/home/php-4.3.6/ext/imagick/imagick.c:2471: undefined reference to `DrawAllocateWand'
ext/imagick/imagick.lo: In function `zif_imagick_drawannotation':
/home/php-4.3.6/ext/imagick/imagick.c:2532: undefined reference to `DrawAnnotation'
/home/php-4.3.6/ext/imagick/imagick.c:2534: undefined reference to `DrawRender'
ext/imagick/imagick.lo: In function `zif_imagick_drawrectangle':
/home/php-4.3.6/ext/imagick/imagick.c:2578: undefined reference to `DrawRectangle'
/home/php-4.3.6/ext/imagick/imagick.c:2581: undefined reference to `DrawRender'
ext/imagick/imagick.lo: In function `zif_imagick_drawellipse':
/home/php-4.3.6/ext/imagick/imagick.c:2627: undefined reference to `DrawEllipse'
/home/php-4.3.6/ext/imagick/imagick.c:2630: undefined reference to `DrawRender'
ext/imagick/imagick.lo: In function `zif_imagick_drawarc':
/home/php-4.3.6/ext/imagick/imagick.c:2676: undefined reference to `DrawArc'
/home/php-4.3.6/ext/imagick/imagick.c:2679: undefined reference to `DrawRender'
ext/imagick/imagick.lo: In function `zif_imagick_drawcircle':
/home/php-4.3.6/ext/imagick/imagick.c:2723: undefined reference to `DrawCircle'
/home/php-4.3.6/ext/imagick/imagick.c:2726: undefined reference to `DrawRender'
ext/imagick/imagick.lo: In function `zif_imagick_drawline':
/home/php-4.3.6/ext/imagick/imagick.c:2770: undefined reference to `DrawLine'
/home/php-4.3.6/ext/imagick/imagick.c:2773: undefined reference to `DrawRender'
ext/imagick/imagick.lo: In function `zif_imagick_drawpoint':
/home/php-4.3.6/ext/imagick/imagick.c:2814: undefined reference to `DrawPoint'
/home/php-4.3.6/ext/imagick/imagick.c:2816: undefined reference to `DrawRender'
ext/imagick/imagick.lo: In function `zif_imagick_setfillcolor':
/home/php-4.3.6/ext/imagick/imagick.c:2872: undefined reference to `DrawSetFillColor'
ext/imagick/imagick.lo: In function `zif_imagick_setfillopacity':
/home/php-4.3.6/ext/imagick/imagick.c:2912: undefined reference to `DrawSetFillOpacity'
ext/imagick/imagick.lo: In function `_php_imagick_clean_up_handle':
/home/php-4.3.6/ext/imagick/imagick.c:5532: undefined reference to `DestroyDrawingWand'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
我是在RH2.1下,PHP4.3.6 PHP编译选项如下:
./configure --with-mysql --with-apxs --enable-fastcgi --with-zlib --enable-exif --with-gd=/usr/local/lib --enable-sysvmsg --enable-sockets --enable-sysvshm --enable-sysvsem --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local/lib --disable-inline-optimization --enable-ftp --with-ttf=/usr/local/bin --with-imagick=/usr/local/ImageMagick

Posted by: baomm at May 5, 2004 03:11 AM

美洲豹:
你看看你的api的源码包,里面就带着例子,没发现,哈哈

Posted by: frank at April 4, 2004 04:26 PM

怎么搞?我都装好了,
就是不会使用那些函数,有没有一些例子给我看看啊?

Posted by: 美洲豹 at April 3, 2004 07:58 PM

我怎么安装不成功?php4.3.4,apache1.3.29,为什么?

Posted by: optix at February 9, 2004 11:22 AM

有呀,我记得mt有个mt-check.cgi,只要那里探测出Magick版本就可以,你只要装redhat的rpm包就行。
我这篇文章是介绍如何让php直接支持imagick,跟mt还是没有关系的。

Posted by: frank at February 6, 2004 11:06 AM

那麼,裝上imagemagick後,設定好mt.cfg以支持它後,你在mt上傳介面上有看到縮圖的選項了嗎?

Posted by: 酋長 at February 6, 2004 10:56 AM

whoever:

那很方便哦,不过我的方法是按照官方的安装文档

Posted by: frank at February 4, 2004 10:46 AM

我用的Mandrake, 使用urpmi就可以直接加上PHP extensions, 不需要重新编译了
urpmi php-imagick

Posted by: whoever at February 4, 2004 10:31 AM
发表回复









记住我的信息?