欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

Windows下编译 ImageMagick 的php API

程序员文章站 2022-04-15 20:48:30
...

首先,需要的软件包有: PHP5.2.5 源码包[http://www.php.net/downloads.php] bindlib_w32 [http://www.php.net/extra/bindlib_w32.zip] win32build [http://www.php.net/extra/win32build.zip] PHP5.2.5 Win32 二进制包 [http://www.php.net/downloads.php]

首先,需要的软件包有:
PHP5.2.5 源码包[http://www.php.net/downloads.php ]
bindlib_w32 [http://www.php.net/extra/bindlib_w32.zip ]
win32build [http://www.php.net/extra/win32build.zip ]
PHP5.2.5 Win32 二进制包 [http://www.php.net/downloads.php ]
ImageMagick 6.3.8-0 Windows版源码 [http://www.imagemagick.org/download/windows/ ]
Imagick 2.1.0RC3 源码包 [http://pecl.php.net/package/imagick ]
MagickWandForPHP 1.0.6 源码包 [http://www.imagemagick.org/download/php/ ]

说明一下:
php源码包就不用说了,编译需要php的源码的。
bindlib_w32 是为了编译一个resolv.lib
win32build是php编译最基本的一些lib文件和include文件。
php的二进制包是因为需要/dev/php5ts.lib文件,当然,你可以选择自己编译生成,但你的工作量将因此增加很多倍。
ImageMagick的windows源码是用来编译windows下的lib文件,同时,编译MagickWand和Imagick都还需要部分源 码。
Imagick是PHP官方提供的一个ImageMagick的扩展,而MagickWandForPHP 则是ImageMagick官方提供的。

此外,还需要一些环境:

Microsoft Visual Studio 6, Cygwin


ok,现在开始。



建立一个目录 E:/develop,然后分别建立两个子目录,ImageMagick,PHPBuild。将ImageMagick源码直接解压到 ImageMagick目录下;将php5.2.5的源码解压到PHPBuild目录,同时,将bindlib_w32解压到 PHPBuild/bindlib_w32下,win32build 解压到 PHPBuild/win32build 下。


首先进入ImageMagick/ImageMagick-6.3.8/VisualMagick/configure,用VC6打开 configure.dsw,编译,这样就可以把ImageMagick的编译配置文件生成。生成之后,运行当前目录的configure.exe,第二 页选择Static Multi-threaded DLL runtimes (VisualStaticMTDLL).,Build Options什么都不选。Edit ‘magick-config.h’的根据自己的情况来定。直接下一步,下一步,完成,稍等一会儿,ImageMagick/ImageMagick- 6.3.8/VisualMagick就会生成一个VisualStaticMTDLL.dsw.


用VC6打开,Build ==> Set Active Configuration…,打开,选择All Release。然后,直接BuildèRebuild All。这个编译的过程耗时较长,所以可以考虑安装官方说明文档的说法,冲杯咖啡,慢慢等。

编译完成之后,在ImageMagick/ImageMagick-6.3.8/VisualMagick/lib下会有17个以CORE_RL_ 开头的Lib文件,和两个原来就有的X11.lib和Xext.lib。

将ImageMagick/ImageMagick-6.3.8/和ImageMagick/ImageMagick-6.3.8/magick加入VC 的Include目录里边,将ImageMagick/ImageMagick-6.3.8/VisualMagick/lib加入Lib的目录里。

接下来,进入PHPBuild/bindlib_w32,用vc打开bindlib.dsw,release编译,将生成的resolv.lib覆盖 PHPBuild/win32build/lib下的同名文件。

解压PHP的二进制版本,并将目录添加到系统环境变量的Path里。
运行Cygwin,进入PHPBuild/php-5.2.5/ext,执行



这样,ext目录下就会生成两个新的目 录,imagick和magickwand,将之前下载的两个扩展的源码分别直接解压覆盖两个目录的同名文件。并将php二进制包的 dev/php5ts.lib分别复制到两个目录中。

下面就得改dsp文件了。将这些替换原有dsp的相应内容。
magickwand.dsp:

imagick.dsp

因为我只需要Release的dll,所以 Debug部分我没改。(这些内容,参考DIrk的Magickwand的编译以及他提供的dsp文件)

用VC6打开,选择release模式,编译。
成功后将会在PHPBuild/php-5.2.5/Release_TS下生成php_magickwand.dll 和 php_imagick.dll。编译过程就结束了。


PS:
我生成的php_imagick.dll和php_magickwand.dll




UPDATE:

嗯,关于安装,不得不说的
ImageMagick/ImageMagick-6.3.8/config
这个目录是ImageMagick的配置文件
php方面的安装,只要把dll复制到php的ext目录,再修改php.ini,加上extension=php_imagick.dll或 extension=php_magickwand.dll

而配置文件部分
我是将这个config目录复制到了php的二进制文件夹的extra目录,改名为imagemagick_config,主要是方便管理和方便辨识
然后添加一个系统环境变量MAGICK_HOME,指到这个目录即可

原文:http://www.bitnp.net/viewthread.php?tid=282291