分类

最新评论

Kevin's Blog
.
不管你来或不来,我都在这里--- my country of freedom.
2024
如果人生是值得的,那就值得记录…

六月 廿二 甲辰【龙】年
辛未月 壬辰日 
Sat,27 Jul 2024 15:56:06
自由国度 平凡的足迹
Thu, 24 Dec 2020 5
php扩展imagick两天踩坑记,亲测心得 | 2020/12/24 17:28:24
php扩展imagick两天踩坑记,亲测心得 | 2020/12/24 17:28:24
php扩展imagick两天踩坑记,亲测心得 | 2020/12/24 17:28:24
php扩展imagick两天踩坑记,亲测心得 | 2020/12/24 17:28:24
php扩展imagick两天踩坑记,亲测心得 | 2020/12/24 17:28:24

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 "
Page ".($i+1)."

"; } $s=pdf2png("test.PDF",$path); $scount=count($s); for($i=0;$i<$scount;$i++) { echo "

Page ".($i+1)."

"; }


这样就正常了。。。。。。




注:要搞个可移植版本,能直接执行magick

名堂搞尽了。。。



https://ftp.icm.edu.pl/packages/ImageMagick/binaries/

这里是ImageMagick资源大全。免费免币。什么版本都有。

共有0条留言

154368