PHP扩展之Imagick安装

        最近工作项目中,有一个需求需要pdf文件转成图片格式。以下纪录PHP中使用imagick实现把PDF转成图片的操作过程。

        本地环境:

        wamp3.2集成开发环境:

            Apache :2.4.41

            Php       :7.3.12

            MariaDB :10.4.10

        冷暖自知一抹茶ck

安装步骤:

1. 安装ImageMagick

    下载地址:http://www.imagemagick.org/download/binaries/ ,可下载最新版本,如 ImageMagick-7.0.10-10-Q8-x64-dll.exe,.exe格式安装软件。默认会安装Path路径,若没有,可自行配置。

    把ImageMagick程序安装目录下的modules\coders 文件夹下的IM_dll  复制到 wamp64\bin\apache\apache2.4.41\bin目录下。


2.下载拓展

        php imagick扩展连接地址:

                地址一:http://windows.php.net/downloads/pecl/releases/imagick/

                地址二:https://pecl.php.net/package/imagick

        要点: 注意对应php版本 ts还是nts x86还是x64

        这里以phpinfo()为准所以我应该下载imagick 3.4.4版本 PHP7.3 Thread Safe (TS) x64 的拓展——php_imagick-3.4.4-7.3-ts-vc15-x64.zip.


3. 安装拓展

    1.解压上述文件后,将php_imagick.dll复制到对应版本php扩展  ext 目录。

    2.修改php.ini 加上extension=php_imagick.dll,这里以phpinfo 实际加载的Loaded Configuration File 参数为准。


        冷暖自知一抹茶ck

4. 执行pdf转png图片代码

/**
* PDF2PNG
* @param $pdf  待处理的PDF文件
* @param $path 待保存的图片路径
* @param $page 待导出的页面 -1为全部 0为第一页 1为第二页
* @return      保存好的图片路径和文件名
*/
 function pdf2png($pdf,$path,$page=-1)
{  
   if(!extension_loaded('imagick'))
   {  
       return false;  
   }  
   if(!file_exists($pdf))
   {  
       return false;  
   }  
   $im = new Imagick();  
   $im->setResolution(120,120);  
   $im->setCompressionQuality(100);
   if($page==-1)   
      $im->readImage($pdf);
   else
      $im->readImage($pdf."[".$page."]");
   foreach ($im as $Key => $Var)
   {  
       $Var->setImageFormat('png');  
       $filename = $path."/". md5($Key.time()).'.png';
       if($Var->writeImage($filename) == true)
       {  
           $Return[] = $filename;  
       }  
   }  
   return $Return;  
}  
$path="D:/software/wamp64/www/imagick/images";//请确保当前目录下有这个文件夹,由于一直要用,所以就不加检测了
$s=pdf2png("D:/software/wamp64/www/imagick/1.pdf",$path);
var_dump($s);


注意:

报错1:

Fatal error: Uncaught ImagickException: unable to open image '1.pdf': No such file or directory @ error/blob.c/OpenBlob/
3496 in D:\software\wamp64\www\imagick\index.php on line 59

        解决方案:pdf文件路径使用绝对路径

报错2:

$im->readImage($pdf); Fatal error:  抛出ImagickException

        解决方案:

        安装ghostscript,https://www.ghostscript.com/download.html 

      

冷暖自知一抹茶ck
请先登录后发表评论
  • 最新评论
  • 总共0条评论