欢迎来到元素模板ys720.com,本站提供专业的织梦模板PBOOTCMS模板网站模板网站修改/网站仿站
当前位置:主页 > 程序教程 > pbootcms教程 >
pbootcms教程

pbootcms 上传图片 优化缩小图片

(元素模板) / 2023-05-04 11:38

如何优化pbootcms 上传图片压缩呢?元素模板为您解答
首先找到PbootCMS的图片上传方法:
增加一个等比压缩图片的方法:compressedImage

位置:admin \ controller \ IndexController.php

找到upload 里面
添加

        $path=$upload[0];
        $path=substr_replace($path,'',0,1);
        $this->compressedImage($path,$path);

\core\function\file.php 在最下面添加下面代码

代码如下
/**
 * desription 压缩图片
 * @param string $imgsrc 图片路径
 * @param string $imgdst 压缩后保存路径,从项目根目录开始的路径(为空则输出图片)
 * @param string $imgwidth 等比压缩图片 图片的宽度
 */
public function compressedImage($imgsrc, $imgdst ,$imgwidth = 800)
{
    list($width, $height, $type) = getimagesize($imgsrc);
    $newWidth = $width > 800 ? 800 : $width; //图片宽度的限制
    $newHeight = $height > 800 ? ceil($height * 800 / $width) : $height; //自适应匹配图片高度
    switch ($type) {
        case 1:
            #先判断是否为gif动画
            $fp = fopen($imgsrc, 'rb');
            $image_head = fread($fp, 1024);
            fclose($fp);
            $giftype =  preg_match("/" . chr(0x21) . chr(0xff) . chr(0x0b) . 'NETSCAPE2.0' . "/", $image_head) ? false : true;
            if ($giftype) {
                header('Content-Type:image/gif');
                $image_wp = imagecreatetruecolor($newWidth, $newHeight);
                $image = imagecreatefromgif($imgsrc);
                imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
                //90代表的是质量、压缩图片容量大小
                imagejpeg($image_wp, $imgdst, 90);
                imagedestroy($image_wp);
                imagedestroy($image);
            }
            break;
        case 2:
            header('Content-Type:image/jpeg');
            $image_wp = imagecreatetruecolor($newWidth, $newHeight);
            $image = imagecreatefromjpeg($imgsrc);
            imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
            //90代表的是质量、压缩图片容量大小
            imagejpeg($image_wp, $imgdst, 90);
            imagedestroy($image_wp);
            imagedestroy($image);
            break;
        case 3:
            header('Content-Type:image/png');
            $image_wp = imagecreatetruecolor($newWidth, $newHeight);
            $image = imagecreatefrompng($imgsrc);
            imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
            //90代表的是质量、压缩图片容量大小
            imagejpeg($image_wp, $imgdst, 90);
            imagedestroy($image_wp);
            imagedestroy($image);
            break;
    }
}

Copyright @ 2013-2021 元素模板 www.ys720.com All Rights Reserved. 版权所有 元素模板 www.ys720.com