用GD库把一张图分割几个等分

利用php里面的GD库可以轻松地把图片进行处理,下面的函数可以把一张图片切割为5部分并按比例(原图的四分之一)缩小保存图片。

/**
     * @param $img :生成的图片
     * @param $source_img :要处理的图片
     * @param $x :从原图x坐标开始截取(原图左上角为0)
     * @param $y :从原图y坐标开始截取(原图左上角为0)
     * @param $d_x :生成图片的宽度
     * @param $d_y :生成图片的高度
     * @param $file_name :保存的文件名称
     * @param $w :载入的原图宽度
     * @param $h :载入的原图高度
     */
    private function makeSmallImg($img,$source_img,$x,$y,$d_w,$d_h,$w,$h,$file_name)
    {
        imagecopyresampled($img, $source_img, 0, 0, $x, $y, $d_w, $d_h, $w, $h);
        imagejpeg($img,$file_name,100);//将缩略的结果保存,质量为75(0~100)
        return ;
    }

    //把图片分成几份均等缩略图
    public function departImg($file)
    {
        list($w,$h) = getimagesize($file);//获取宽、高
        $source = self::createImg($file);//创建原图
        $img = imagecreatetruecolor($w/4, $h/4);//填充背景色

        self::makeSmallImg($img, $source, $w/2, 0, $w/2, $h/2, $w, $h,PUBLIC_DIR.'/1.jpg');//右上角
        self::makeSmallImg($img, $source, $w/2, $h/2, $w/2, $h/2, $w, $h,PUBLIC_DIR.'/2.jpg');//右下角
        self::makeSmallImg($img, $source, $w/4, $h/4, $w/2, $h/2, $w, $h,PUBLIC_DIR.'/3.jpg');//中间部分
        self::makeSmallImg($img, $source, 0, $h/2, $w/2, $h/2, $w, $h,PUBLIC_DIR.'/4.jpg');//左下角
        self::makeSmallImg($img, $source, 0, 0, $w/2, $h/2, $w, $h,PUBLIC_DIR.'/5.jpg');//左上角
        self::makeSmallImg($img, $source, 0, 0, $w/4, $h/4, $w, $h,PUBLIC_DIR.'/6.jpg');//原图等比缩略

        //销毁原图和临时内存图片,释放资源
        imagedestroy($source);
        imagedestroy($img);

       return is_file(PUBLIC_DIR.'/6.jpg') ? true : false;
    }
    /**
     * 生成图片
     */
    protected function createImg($file)
    {
       $infos = explode('.', $file);
     $ext = strtolower($infos[count($infos) - 1]);

        if ($ext === 'jpeg')
        {
            $ext = 'jpg';
        };
       
        $img = null;
        switch ($ext)
        {
            case 'png' : $img = imagecreatefrompng($file);break;
            case 'jpg' : $img = imagecreatefromjpeg($file);break;
            case 'gif' : $img = imagecreatefromgif($file);break;
            default:break;
        }
        return $img;
    }
departImg(PUBLIC_DIR.'/test.jpg');

这张是原图:



下面的按比例分割后缩小的图片:

     

评论/留言