通过 php 进行简单的缩略图裁剪

上一话我们写了简单的通过js+css做裁图处理
但是那个有一个缺点,如果img是隐藏的,则js无法读取高度所以无法处理

这一话我们来说一下php进行处理,和上一篇写的如果能做到互补的作用,因为php处理的话无疑会消耗服务器的运算能力和存储,所以还是要谨慎考虑是否需要用到php进行动态切图

public function img() {

        //获取缩略图地址,这个是我自己的类的内容 可以不用看,就是根据id获取缩略图即可
        $blog_article_id = (int)$this->request->get['blog_article_id'];
        $article_info = $this->model_article_article->getArticle($blog_article_id);

        if ($article_info['image']) {
            $thumb = $article_info['image'];
        } else {
            $thumb = '';
        }

        //获取缩略图的详细数据
        $array = getimagesize($thumb);

        //获取缩略图
        switch ($array[2])
        {
        case 1:
            $src_im = @imagecreatefromgif($thumb);
            header("Content-type: image/gif");
            break;
        case 2:
            $src_im = @imagecreatefromjpeg($thumb);
            header("Content-type: image/jpeg");
            break;
        case 3:
            $src_im = @imagecreatefrompng($thumb);
            header("Content-type: image/png");
            break;
        }

        /* 如果获取缩略图失败 */
        if(!$src_im)
        {
            /* 建立一个新图 */
            $src_im  = imagecreatetruecolor(150, 30);
            $bgc = imagecolorallocate($src_im, 255, 255, 255);
            $tc  = imagecolorallocate($src_im, 0, 0, 0);

            imagefilledrectangle($src_im, 0, 0, 150, 30, $bgc);

            /* 输出报错图 */
            imagestring($src_im, 1, 5, 5, 'Error loading ' . $thumb, $tc);
            imagejpeg($src_im);

            imagedestroy($src_im);
            exit();
        }

        //创建目标图像
        $dst_im = imagecreatetruecolor($array[0], $array[0]*0.618 );

        //拷贝源图像固定比例区域
        imagecopy( $dst_im, $src_im, 0, 0, 0, ($array[1]-$array[0]*0.618)/2, $array[0], $array[0]*0.618 );

        switch ($array[2])
        {
        case 1:
            //输出拷贝后图像
            imagegif($dst_im);
            break;
        case 2:
            //输出拷贝后图像
            imagejpeg($dst_im);
            break;
        case 3:
            //输出拷贝后图像
            imagepng($dst_im);
            break;
        }

        //输出后清除内存
        imagedestroy($dst_im);
        imagedestroy($src_im);
    }

用法也很简单,直接将这个类的实例输出就是我们想要的已经处理好的图片,输出格式大致为

<img src="index.php&aid=1" >
<img src="index.php&aid=2" >
<img src="index.php&aid=3" >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值