天天看点

ImageMagick、imagick和ghostscript三者的关联?

一、功能概述

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 &amp;&amp; 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"' &gt;&gt; /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>&lt;?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-&gt;setResolution(150,150);</code>

<code>            </code><code>$IM-&gt;setCompressionQuality(180);</code>

<code>            </code><code>$IM-&gt;readImage($path);</code>

<code>            </code><code>foreach ($IM as $Key =&gt; $Var) {</code>

<code>                </code><code>$Var-&gt;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-&gt;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=&gt;$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>?&gt;</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,如需转载请自行联系原作者