一、功能概述
ImageMagick是第三方的图片处理软件,功能要比GD强大。建议两者都安装,并不冲突。
imagick是php的一个扩展模块,它调用ImageMagick提供的API来进行图片的操作。
Ghostscript是一套建基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件。
Ghostscript最初是以商业软件形式在PC市场上发售,并称之为“GoScript”。但由于速度太慢(半小时一版A4),销量极差。后来有心人买下了版权,并改在Linux上开发,成为了今日的Ghostscript。
已经从Linux版本移植到其他操作系统,如其他Unix、Mac OS X、VMS、Windows、OS/2和Mac OS classic。
ImageMagick无法直接实现pdf文档到图片的转换,需要借助于gostscript软件包
二、安装方式
1、编译安装ImageMagick
1
2
3
4
5
6
<code># tar xf ImageMagick-6.8.9-9.tar.gz</code>
<code># cd ImageMagick-6.8.9-9</code>
<code># ./configure --prefix=/usr/local/imagemagick</code>
<code># make && make install</code>
<code>编译安装完成之后记得配置.</code><code>/convert</code><code>的环境变量</code>
2、编译安装imagick
<code># tar -xf imagick-3.2.0RC1.tgz</code>
<code># cd imagick-3.2.0RC1</code>
<code># /usr/local/php/bin/phpize</code>
<code># ./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick</code>
3、编译安装Ghostscript
7
<code># tar xf ghostscript-9.02.tar.gz</code>
<code># cd ghostscript-9.02</code>
<code># ./configure</code>
<code>建议Ghostscript使用yum安装,因为安装的时候有一些字体库依赖包</code>
<code># yum -y install ghostscrip</code>
三、php加载imagick模块
1、php加载imagick动态模块
<code># echo 'extension="imagick.so"' >> /usr/locla/php/etc/php.ini</code>
<code># service php-fpm restart</code>
2、查看phpinfo页面
<a href="http://s3.51cto.com/wyfs02/M01/58/85/wKioL1SzfdSwfEl1AARbxAl58EU117.jpg" target="_blank"></a>
四、ImageMagick命令行的使用
注释:仅安装ImageMagick为安装GhostScript的效果
手动使用命令实现图片到图片、图片到pdf等等的转换;但是却无法实现pdf到图片的转换,命令如下:
8
9
<code>[root@localhost opt]</code><code># ls</code>
<code>document.pdf imagice.png</code>
<code>[root@localhost opt]</code><code># /usr/local/imagemagick/bin/convert imagice.png nihao_tupian.jpg</code>
<code>document.pdf imagice.png nihao_tupian.jpg</code>
<code>[root@localhost opt]</code><code># /usr/local/imagemagick/bin/convert document.pdf nihao_wendang.pdf</code>
<code>convert: no images defined `nihao_wendang.pdf' @ error</code><code>/convert</code><code>.c</code><code>/ConvertImageCommand/3210</code><code>.</code>
安装GhostScript后的效果
<code>convert: no images defined `nihao_wendang.pdf' @ error</code><code>/convert</code><code>.c</code><code>/ConvertImageCommand/3210</code>
<code>[root@localhost opt]</code><code># yum -y install ghostscript</code>
<code>document.pdf imagice.png nihao_tupian.jpg nihao_wendang.pdf</code>
五、php程序之调用
1、php程序调用imagick程序
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<code><?php</code>
<code> </code><code>$pdfFile=$_GET[</code><code>'pdf'</code><code>];</code>
<code> </code><code>if</code><code>(empty($pdfFile)){</code>
<code> </code><code>$path=</code><code>'/www/111111.pdf'</code><code>;</code>
<code> </code><code>var_dump(is_readable($path));</code>
<code> </code><code>$pdfFile=</code><code>'111111.pdf'</code><code>;</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>$path=</code><code>'/www/yanjiuyuan/pdf/'</code><code>.$pdfFile;</code>
<code> </code><code>}</code>
<code> </code><code>if</code><code>(!file_exists($path)){</code>
<code> </code><code>echo</code> <code>"no"</code><code>;</code>
<code> </code><code>$Return=array();</code>
<code> </code><code>$filelen=strlen($pdfFile);</code>
<code> </code><code>$strFileName=substr($pdfFile,0,$filelen-4);</code>
<code> </code><code>$fp = @fopen ( </code><code>"./pdf/"</code><code>.$strFileName.</code><code>".txt"</code><code>, </code><code>'r'</code> <code>);</code>
<code> </code><code>if</code> <code>($fp) {</code>
<code> </code><code>$arr = unserialize ( fgets ( $fp ) );</code>
<code> </code><code>$Return=$arr;</code>
<code> </code><code>fclose ( $fp );</code>
<code> </code><code>$IM = new imagick();</code>
<code> </code><code>$IM->setResolution(150,150);</code>
<code> </code><code>$IM->setCompressionQuality(180);</code>
<code> </code><code>$IM->readImage($path);</code>
<code> </code><code>foreach ($IM as $Key => $Var) {</code>
<code> </code><code>$Var->setImageFormat(</code><code>'png'</code><code>);</code>
<code> </code><code>$Filename = </code><code>'/www/yanjiuyuan/pdf/'</code> <code>. </code><code>time</code><code>() . uniqid() . </code><code>'.png'</code><code>;</code>
<code> </code><code>if</code> <code>($Var->writeImage($Filename) == </code><code>true</code><code>) {</code>
<code> </code><code>//</code> <code>$Return[] = $Filename;</code>
<code> </code><code>array_push($Return,$Filename);</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>$fp = fopen (</code><code>"/www/yanjiuyuan/pdf/"</code><code>.$strFileName.</code><code>".txt"</code><code>, </code><code>'w'</code> <code>);</code>
<code> </code><code>fwrite ( $fp, serialize ( $Return ) );</code>
<code> </code><code>fclose ( $fp );</code>
<code> </code><code>$imageHtml=array();</code>
<code> </code><code>foreach($Return as $key=>$value){</code>
<code> </code><code>$strNumber=strlen($value);</code>
<code> </code><code>$imPath=substr($value,$strNumber-27,$strNumber);</code>
<code> </code><code>$url=</code><code>'www/yanjiuyuan/pdf/'</code><code>.$imPath;</code>
<code> </code><code>$imageHtml[]=$url;</code>
<code> </code><code>print_r($imageHtml);</code>
<code> </code><code>?></code>
2、页面访问url
<a href="http://s3.51cto.com/wyfs02/M02/58/88/wKiom1SzgPaxXCfTAAIxFXFMaYM316.jpg" target="_blank"></a>
3、查看生成的图片
本文转自zys467754239 51CTO博客,原文链接:http://blog.51cto.com/467754239/1602518,如需转载请自行联系原作者