php中ImageMagick安装教程;ImageMagick安装包;ImageMagick安装注意事项;php中pdf转img,fastadmin中PDF文件转换成img图片

步骤教程:

Imagick 扩展

https://pecl.php.net/package/imagick

安装imagemagick

https://windows.php.net/downloads/pecl/deps/

安装Ghostscript软件

https://www.ghostscript.com/releases/gsdnld.html

windows下用Imagick将pdf转图片 一直报错:无法读取文件的解决方案:

把ghostscript的bin目录下的 gswin64c.exe拷贝一份,重命名为:gs.exe

windows下用Imagick将pdf转图片 一直报错:无法读取文件的解决方案

按照步骤安装php扩展、ImageMagick,ghostscript。版本要仔细检查,最后完全OK。并可以将图片合成转换等操作,就是在读取pdf时报错。重新安装了很多版本,都无法解决。

if(!file_exists($pdf_path)){

    return false;

}

$im=new \Imagick();$im->setCompressionQuality(100);$im->setResolution(120, 120);//设置分辨率 值越大分辨率越高$pdf_path=readlink($pdf_path);$im->readImage($pdf_path);//这里报错: ImagickException in ***

     

解决方案:

把ghostscript的bin目录下的 gswin64c.exe拷贝一份,重命名为:gs.exe

Windows环境下

一、开启 Imagick 扩展

1、安装PHP扩展:Imagick,下载地址 https://pecl.php.net/package/imagick 注意和php版本保持一致;

2、将下载下来的文件解压,把php_imagick.dll复制到php/ext下,即php的扩展目录;

3、打开php.ini文件,添加

extension=php_imagick.dll

1

4、重启apache

二、安装imagemagick

1、下载地址:https://windows.php.net/downloads/pecl/deps/

2、将下载下来的imagemagick文件解压到E盘目录下(目录可根据情况调整,我这里E:\ImageMagick-7.1.0-18-vc15-x64);

3、将E:\ImageMagick-7.1.0-18-vc15-x64\bin加入到系统环境变量path中

4、然后将E:\ImageMagick-7.1.0-18-vc15-x64\bin目录下所有的以dll结尾的文件复制到php根目录下,如果提示重复点击跳过即可

5、复制完成后重启Apache(建议重启计算机),这时候php的imagick拓展安装完成

三、安装Ghostscript软件

1、Ghostscript下载地址:https://www.ghostscript.com/releases/gsdnld.html

四、实例

$newPathName = $fileDir."/".mt_rand(1000,9999).$attaItem['name'];
            try {
                if(file_exists($uploadConfig['savepath'].$attaItem['url'])){
                    $fileInfo = pathinfo($uploadConfig['savepath'].$attaItem['url']);
                    // 判断是否为PDF
                    if(in_array($fileInfo['extension'],['pdf'])){
                        try {
                            $imagick = new Imagick();
                            $imagick->readImage($uploadConfig['savepath'].$attaItem['url']); // 读取PDF
                            foreach($imagick as $k => $v){
                                $v->setImageFormat('png'); // 设置输出图片格式为PNG
                                $newFileName = $k.date('Ymdhi',time()).'.png';
                                $Filename = $fileDir.'/'.$newFileName;
                                $v->writeImage($Filename); // 将图片写入文件
                                $attachIdPathArr[$attaItem['id']][] = $Filename;
                            }
                            $imagick->clear();
                            $imagick->destroy();
                        } catch (\ImagickException $e) {
                            // 处理Imagick异常
                            return 'Error: ' . $e;
                        } catch (\Exception $e) {
                            // 处理其他异常
                            return 'Error: ' . $e->getMessage();
                        }
                    }else{
                        copy($uploadConfig['savepath'].$attaItem['url'], $newPathName);
                        $path[] = $newPathName;
                        $attachIdPathArr[$attaItem['id']][] = $newPathName;
                    }
                }
            }catch (Exception $e){

            }
/**

     * @package pdf文档转换图片

     * @param   string      $filepath pdf文档绝对路径 D:/1.pdf

     * @param   string      $filename 文件夹名 每个pdf创建一个文件夹

     * @return  array

     */

    public function pdf2pngs($pdf,$filename){



        $path = ROOT_PATH . "public". DS ."uploads". DS ."img". DS . $filename ; // 图片存放目录

           if (!file_exists($path)) {

          mkdir($path, 0700, true); //创建目录

          chmod($path, 0700); //赋予权限

        }

        $images = [];



        $imagick = new \Imagick();

        // 设置图片分辨率

        $imagick->setResolution(120, 120);

        // 该函数接受单个参数$quality,该参数保存一个表示图像压缩质量的整数值

        $imagick->setCompressionQuality(100);

        $imagick->readImage($pdf);



        foreach ($imagick as $key => $val) {

            // 设置图片格式并生成png图片

            $val->setImageFormat('png');

            // $file = $path . DIRECTORY_SEPARATOR . md5($key.time()) . '.png';    //图片名

            $file = $path . DS . md5($key.time()) . '.png';    //图片名

            if ($val->writeImage($file) === true) {

                $images[] = $file;

            }

        }

        return $images;

    }

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值