• 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
    # 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

    wKiom1Szf43gMwX-AAKc4djuQ9o095.jpg

     

    三、php加载imagick模块

    1、php加载imagick动态模块

    1
    2
    # echo 'extension="imagick.so"' >> /usr/locla/php/etc/php.ini
    # service php-fpm restart

    2、查看phpinfo页面

    wKioL1SzfdSwfEl1AARbxAl58EU117.jpg

     

    四、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);
        ?>
  • 相关阅读:
    在eclipse中如何在大量项目中查找指定文件
    字体图标使用笔记
    微信扫码显示特效
    Flex 布局教程:实例篇
    Flex 布局教程:语法篇
    12月份前端资源分享
    什么样的技术能活下来?该如何筛选繁复的框架和工具
    web前端知识在乱花渐欲迷人眼的当下,如何分清主次和学习优先级呢?
    2015前端生态发展回顾(转)
    HDU1507 Uncle Tom's Inherited Land*
  • 原文地址:https://www.cnblogs.com/66w66/p/13630040.html
Copyright © 2020-2023  润新知