博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ImageMagick、imagick和ghostscript三者的关联?
阅读量:6040 次
发布时间:2019-06-20

本文共 3572 字,大约阅读时间需要 11 分钟。

一、功能概述

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);
    
?>

2、页面访问url

3、查看生成的图片

     本文转自zys467754239 51CTO博客,原文链接:http://blog.51cto.com/467754239/1602518,如需转载请自行联系原作者

你可能感兴趣的文章
VDI序曲二十 桌面虚拟化和RemoteApp集成到SharePoint 2010里
查看>>
移动互联网,入口生死战
查看>>
JAVA多线程深度解析
查看>>
Kafka High Level Consumer 会丢失消息
查看>>
时间轴
查看>>
java 获取系统当前时间的方法
查看>>
Ubuntu 10.04升级git 到1.7.2或更高的可行方法
查看>>
Spring Security4实战与原理分析视频课程( 扩展+自定义)
查看>>
第一周博客作业
查看>>
thinkpython2
查看>>
oracle recyclebin与flashback drop
查看>>
svmlight使用说明
查看>>
Swing 和AWT之间的关系
查看>>
Mysql设置自增长主键的初始值
查看>>
Android计时器正确应用方式解析
查看>>
获取post传输参数
查看>>
ASP生成静态页面的方法
查看>>
HDU 1325 Is It A Tree? 判断是否为一棵树
查看>>
Shell命令-文件压缩解压缩之gzip、zip
查看>>
个人总结
查看>>