惠学宝web技术

PHP7.1+Imagick2.0 实现PSD文件转PNG图片

2018-01-05  本文已影响40人  sean92_

一、关于Imagick库

链接一枚 : imagick官网

wizard.jpg
ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。与php官方GD库相比功能更加丰富,支持图片格式也更加多。
官网功能介绍
(附中文)

二、业务需求介绍

三、服务器环境搭建(基于ubuntu16.4)

四、代码实现(php7.1)

        $image = new \Imagick(ROOT_PATH.'public/uploads/'.$fileName);   //实例  化imagick 传入参数为文件路径
        $num = $image->getNumberImages();  // 获取图层数
        $index = $image->getNumberImages()+1;
        $code = '';
        for($i=1;$i<6;$i++){
            $code.=rand(0,9);
        }
        //批量压缩及保存图层为png文件
        for ($i = 1; $i < $num; ++$i) {
            $image->setIteratorIndex($i);  //选择图层
            $pagedata = $image->getImagePage();  
            $w = $image->getImageWidth()/4;   //图片宽
            $h = $image->getImageHeight()/4;  //图片高
            $image->setImageFormat('png');    //图片格式

            $name = $i.time().$code. '.png';
            
            //压缩图片
            $image->setImageCompression(\Imagick::COMPRESSION_UNDEFINED);  //图片压缩
            $quality = $image->getImageCompressionQuality() * 0.60;    //压缩质量 0.6
            if ($quality == 0) {
                $quality = 60;
            }
            $image->setImageCompressionQuality($quality);
            $image->stripImage();
            
            
            $image->writeImage(ROOT_PATH.'public/uploads/'.$name); //导出所有图层到单独的png文件
            
            $pagedata['z-index'] = $index;
            $pagedata['index'] = $index;
            $pagedata['url'] = $url.$name;
            $allinfo[] =$pagedata;
            $index--;
        }

五、效果演示

image.png
image.png

欢迎交流指教!

上一篇下一篇

猜你喜欢

热点阅读