moneyslow.com

ImageMagick、imagick、ghostscript三者关系

ImageMagick、imagick、ghostscript三者关系
imagemagick

一、功能概述

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

# tar xf ImageMagick-6.8.9-9.tar.gz

# cd ImageMagick-6.8.9-9

# ./configure
--prefix=/usr/local/imagemagick

# make && make install

编译安装完成之后记得配置./convert的环境变量

2、编译安装imagick

# tar -xf imagick-3.2.0RC1.tgz

# cd imagick-3.2.0RC1

# /usr/local/php/bin/phpize

# ./configure
--with-php-config=/usr/local/php/bin/php-config
--with-imagick=/usr/local/imagemagick

# make && make install

3、编译安装Ghostscript

# tar xf ghostscript-9.02.tar.gz

# cd ghostscript-9.02

# ./configure

# make && make install

建议Ghostscript使用yum安装,因为安装的时候有一些字体库依赖包

# yum -y install ghostscrip

三、php加载imagick模块

1、php加载imagick动态模块

# echo 'extension="imagick.so"'
>> /usr/locla/php/etc/php.ini

# service php-fpm restart

2、查看phpinfo页面

四、ImageMagick命令行的使用

注释:仅安装ImageMagick为安装GhostScript的效果

手动使用命令实现图片到图片、图片到pdf等等的转换;但是却无法实现pdf到图片的转换,命令如下:

[root@localhost opt]# ls

document.pdf  imagice.png

[root@localhost opt]#
/usr/local/imagemagick/bin/convert imagice.png nihao_tupian.jpg

[root@localhost opt]# ls

document.pdf  imagice.png
nihao_tupian.jpg

[root@localhost opt]#
/usr/local/imagemagick/bin/convert document.pdf nihao_wendang.pdf

convert: no images defined
`nihao_wendang.pdf' @ error/convert.c/ConvertImageCommand/3210.

[root@localhost opt]# ls

document.pdf  imagice.png
nihao_tupian.jpg

安装GhostScript后的效果

[root@localhost opt]#
/usr/local/imagemagick/bin/convert document.pdf nihao_wendang.pdf

convert: no images defined
`nihao_wendang.pdf' @ error/convert.c/ConvertImageCommand/3210

[root@localhost opt]# yum -y install
ghostscript

[root@localhost opt]#
/usr/local/imagemagick/bin/convert document.pdf nihao_wendang.pdf

[root@localhost opt]# ls

document.pdf  imagice.png
nihao_tupian.jpg
nihao_wendang.pdf

五、php程序之调用

1、php程序调用imagick程序

<?php

$pdfFile=$_GET['pdf'];

if(empty($pdfFile)){

$path='/www/111111.pdf';

                var_dump(is_readable($path));

$pdfFile='111111.pdf';

}else{

$path='/www/yanjiuyuan/pdf/'.$pdfFile;

}

if(!file_exists($path)){

                echo "no";

}

$Return=array();

$filelen=strlen($pdfFile);

$strFileName=substr($pdfFile,0,$filelen-4);

$fp = @fopen ( "./pdf/".$strFileName.".txt", 'r' );

if ($fp) {

$arr = unserialize ( fgets ( $fp ) );

$Return=$arr;

fclose ( $fp );

}else{

$IM = new imagick();

$IM->setResolution(150,150);

$IM->setCompressionQuality(180);

$IM->readImage($path);

foreach ($IM as $Key => $Var) {

                $Var->setImageFormat('png');

                $Filename =
'/www/yanjiuyuan/pdf/' . time() . uniqid() . '.png';

                if
($Var->writeImage($Filename) == true) {

                   // $Return[] = $Filename;

array_push($Return,$Filename);

                }

            }

$fp = fopen
("/www/yanjiuyuan/pdf/".$strFileName.".txt", 'w' );

fwrite ( $fp, serialize ( $Return ) );

fclose ( $fp );

}

$imageHtml=array();

foreach($Return as $key=>$value){

$strNumber=strlen($value);

$imPath=substr($value,$strNumber-27,$strNumber);

$url='www/yanjiuyuan/pdf/'.$imPath;

$imageHtml[]=$url;

}

print_r($imageHtml);

?>

2、页面访问url

3、查看生成的图片

Exit mobile version