一、功能概述
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
|
# 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
1
2
3
4
5
|
# 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
1
2
3
4
5
6
7
|
# 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动态模块
1
2
|
# echo 'extension="imagick.so"' >> /usr/locla/php/etc/php.ini # service php-fpm restart |
2、查看phpinfo页面
四、ImageMagick命令行的使用
注释:仅安装ImageMagick为安装GhostScript的效果
手动使用命令实现图片到图片、图片到pdf等等的转换;但是却无法实现pdf到图片的转换,命令如下:
1
2
3
4
5
6
7
8
9
|
[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后的效果
1
2
3
4
5
6
7
8
|
[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程序
1
2
3
4
5
6
7
8
9
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
|
<?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);
?>
|