美文网首页
图片压缩

图片压缩

作者: 东西汉 | 来源:发表于2018-07-27 11:37 被阅读0次
    /**
     * 2018-05-24 15:19:26
     * 图片生成缩略图,并且返回原图片_thumb的文件路径
     */
    function picReplace($file ='/uploads/download/2018-01-19/5a61bf55dfc77.jpg'){
        $file_real_path = ROOT_PATH.'public'.$file;//halt($file_real_path);
        //压缩图片,宽度指定300,高度等比
        if($file && file_exists($file_real_path)){
            // 获取文件尾缀
            // $path = pathinfo($file,PATHINFO_EXTENSION );halt($path);
            $file_name = explode('.', $file);
            $thumb_name = $file_name[0].'_thumb';
            //缩略图真实路径
            $thumb_real_path = ROOT_PATH.'/public'.$thumb_name.".{$file_name[1]}";
            if(!file_exists($thumb_real_path)){
                list($width, $height) = getimagesize($file_real_path); //获取原图尺寸
                $houzhui = getimagesize($file_real_path)['mime'];
                $houzhui = substr(strrchr($houzhui, '/'), 1);   
                //缩放尺寸
                $newwidth = 100;
                $percent = $newwidth/$width;  //图片压缩比
                $newheight = $height * $percent;
                switch ($houzhui) {
                    case 'jpeg':
                        $src_im = imagecreatefromjpeg($file_real_path);
                        break;
                    case 'gif':
                        $src_im = imagecreatefromgif($file_real_path);
                        break;
                    case 'png':
                        $src_im = imagecreatefrompng($file_real_path); 
                        break;
                    default:
                        $src_im = imagecreatefromjpeg($file_real_path);
                        break;
                }
                
                $dst_im = imagecreatetruecolor($newwidth, $newheight);
                imagecopyresized($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
                imagepng($dst_im, $thumb_real_path); //输出压缩后的图片
                imagedestroy($dst_im);
                imagedestroy($src_im);
            }
            //替换原来的图片路径
            return $thumb_name.".{$file_name[1]}";
        }else{
            return $file;
        }
    }
    

    缩略图小结

    1.is_file(),is_dir(),file_exists()三个函数的用法
    • file_exists()判断文件或者文件夹是否存在
    • 文件/文件夹存在,is_file()/is_dir()比file_exists()快n倍
    • 文件/文件夹不存在,file_exists()比is_file()/is_dir()快
    2.获取文件后缀
    • pathinfo($file,PATHINFO_EXTENSION )
    • substr(strrchr($file,'.'),1)
    • explode('.',file)[1]
    3.获取文件类型
    • 文件名后缀被篡改时,调用PHP的GD库函数获取文件MIME属性
    $mime = getimagesize($file)['mime'];
    $extension = substr($extension,strrpos($mime,'/')+1);
    

    相关文章

      网友评论

          本文标题:图片压缩

          本文链接:https://www.haomeiwen.com/subject/gzewmftx.html