您的位置:首页 > 编程语言 > PHP开发

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

2015-12-28 12:08 676 查看
上一话我们写了简单的通过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" >
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php