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

来源:互联网 发布:网络项目实施计划书 编辑:程序博客网 时间:2024/06/07 10:51

上一话我们写了简单的通过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" >
0 0
原创粉丝点击