PHP imagick扩展支持PDF转成图片,缩放,2百多种文件支持,
功能很强大,
安装过程也很强大
花了两天时间,终于装上了。磨出心得
先别急于下安装包。那都是小事。
1:先要找准使用环境,找错了,怎么装都没用
环境参数一定是要看4个:
对照4个参数找对应的版本(操作系统这个应该好对照,参数2不说了。以WIN为例)
下载地址:
https://pecl.php.net/package/imagick
http://windows.php.net/downloads/pecl/releases/imagick/
其它地方都可以下。主要是版本要对好。
2:解压,把php_imagick.dll复制到php的ext目录里 就是装扩展的目录了(可能是活动的) 主要是
3:把其它.dll文件复制到php下
*:为了靠谱,两个位都把可以把这些文件复制进去
4: php.ini 增加一行extension=php_imagick.dll 开启此扩展
重启后。
这玩意出现了。
注意:底版本。下面可能会是空的。
这里算是装到一半了。
5.装软件(坑大),操作处理PD和图片的的还是软件,据说是调用API。得数据。所以这里一定要接对砣才行。不然怎么样。执行到$im->readImage($pdf);就会出错。图片jpg可以,但是pdf就是读不到。
因为还要装一个东东。叫ImageMagick(也可以按装Ghostscript),这是一个可执行的软件。要它才能处理PDF。然后把数据给PHP
ImageMagick的安装,很多死在这里。怎么看都没问题。就是不行。
两个要注意的地方:
1:上图画的,版本要搞对。扩展装好后。要在phpinfo里面看一下,这个扩展能和什么版本的软件才能接头。对不上是没用的。
ImageMagick和Ghostscript是不同的。但功能一样,二选一即可。
注:ImageMagick和imagick扩展是一套的,版本要求很严格。如果对不上,死路一条。官方只有最新版,低版的很难找还不一定有。所以建议装Ghostscript。(按照上面指出来的参数取对应版本,这个宽松一点,大致差不多就行了)
Ghostscript下载地址:https://www.ghostscript.com/download/gsdnld.html
严重注意:这里的32 64指的是操作系统的,但不能这么对应,也要按第一个参数图phpinfo里的对应,X86的用32 x64的用64。。这里很坑的。不要按操作系统来。要按phpinfo里的X86还是X64来。x86的要对上32bit
ImageMagick下载地址(官 方):http://www.imagemagick.org/script/install-source.php(要注意参数,版本对不对得上!!!!)
软件按装很容易。一路默认就行了。
最后一步,设置环境变量。就是在CMD模式下。要直接输入gswin32(装的是Ghostscript)或是magick(装的是ImageMagick) 能正常运行就行了。环境变量设置就是在我的电脑,高级里面,把gswin32或magick安装的目录(.exe主文件的绝对路径)加进path去
最后。。重启。。
运行代码
function pdf2png($pdf,$path,$page=-1) { if(!extension_loaded('imagick')) { exit('找不到扩展imagick'); return false; } if(!file_exists($pdf)) { exit($pdf.'Pdf文件不存在'); return false; } $im = new Imagick(); $im->setResolution(120,120); $im->setCompressionQuality(100); if($page==-1) { $i = file_get_contents($pdf); //$im->readImageBlob($i); $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="images";//请确保当前目录下有这个文件夹,由于一直要用,所以就不加检测了 $s=pdf2png("1.jpg",$path); $scount=count($s); for($i=0;$i<$scount;$i++) { echo ""; } $s=pdf2png("test.PDF",$path); $scount=count($s); for($i=0;$i<$scount;$i++) { echo "
"; }
这样就正常了。。。。。。
注:要搞个可移植版本,能直接执行magick
名堂搞尽了。。。
https://ftp.icm.edu.pl/packages/ImageMagick/binaries/
这里是ImageMagick资源大全。免费免币。什么版本都有。