PHP 生成图片缩略图

我不写代码,我只是代码的搬运工!

class ResizeImage
{
//图片类型  
    public $type;  
//实际宽度  
    public $width;  
//实际高度  
    public $height;  
//改变后的宽度  
    public $resize_width;  
//改变后的高度  
    public $resize_height;  
//是否裁图  
    public $cut;  
//源图象  
    public $srcimg;  
//目标图象地址  
    public $dstimg;  
//临时创建的图象  
    public $im;
    public function __construct($img, $wid, $hei,$c,$dstpath)  
    {  
        $this->srcimg = $img;
        $this->resize_width = $wid;
        $this->resize_height = $hei;
        $this->cut = $c;  
        //图片的类型

        $this->type = strtolower(substr(strrchr($this->srcimg,"."),1));  
        //初始化图象  
        $this->initi_img();
        //目标图象地址  
        $this -> dst_img($dstpath);  
        //--  
        $this->width = imagesx($this->im);
        $this->height = imagesy($this->im);
        $this->resize_height = intval($this->height * 100 / $this->width);// remove this line
        //生成图象  
        $this->newimg();  
        ImageDestroy ($this->im);  
    }

    public function newimg()
    {
        //改变后的图象的比例  
        $resize_ratio = ($this->resize_width)/($this->resize_height);  
        //实际图象的比例  
        $ratio = ($this->width)/($this->height);  
        if(($this->cut)=="1")  
        //裁图  
        {
            if($ratio>=$resize_ratio)//高度优先  
            {
                $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);  
                imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,$this->resize_height, (($this->height)*$resize_ratio), $this->height);
                ImageJpeg($newimg,$this->dstimg, 100);  
            }
            if($ratio<$resize_ratio)//宽度优先  
            {
                $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);  
                imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, $this->resize_height, $this->width, (($this->width)/$resize_ratio));  
                ImageJpeg ($newimg,$this->dstimg, 100);  
            }
        } else {
            //不裁图
            if($ratio>=$resize_ratio)
            {
                $newimg = imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio);
                imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, ($this->resize_width)/$ratio, $this->width, $this->height);  
                ImageJpeg ($newimg,$this->dstimg, 100);  
            }
            if($ratio<$resize_ratio)
            {
                $newimg = imagecreatetruecolor(($this->resize_height)*$ratio,$this->resize_height);  
                imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, ($this->resize_height)*$ratio, $this->resize_height, $this->width, $this->height);  
                ImageJpeg ($newimg,$this->dstimg, 100);  
            }
        }
    }
    //初始化图象  
    public function initi_img()  
    {
        if($this->type=="jpg")  
        {
            $this->im = imagecreatefromjpeg($this->srcimg);  
        }
        if($this->type=="gif")  
        {
            $this->im = imagecreatefromgif($this->srcimg);  
        }
        if($this->type=="png")  
        {
            $this->im = imagecreatefrompng($this->srcimg);  
        }
    }
    //图象目标地址
    public function dst_img($dstpath)  
    {
        $full_length  = strlen($this->srcimg);
        $type_length  = strlen($this->type);
        $name_length  = $full_length-$type_length;
        $name         = substr($this->srcimg,0,$name_length-1);
        $this->dstimg = $dstpath;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值