wordpress CMS主题 微信
Home > PHP开发 > 如何通过php给图片创建缩略图?

如何通过php给图片创建缩略图?

高时银博客 PHP开发 点击: 932 次 0 1

缩略图在我们开发网站时会经常用到,如网站的文章列表页,在文章标题前显示一个缩略图,这是很多网站所采用的一个文章列表模式,如:时美网,这样做,主要是让页面图片与文字结合,使用页面看起来不再单调。缩略图,我们会在很多地方用到,如:产品列表、购物车…… 因为原图片可能会很大,如果使用原图片,网页打开速度可能会受到影响,这时,如果用缩略图,打开速度就会有所提升。下面,就来看看缩略图的实现方法——通过php给图片生成缩略图

下面是一个生成缩略图的php自定义函数:

function image_scale($img_a,$w_a=100,$h_a=100,$pre="s_"){
//1、获取原图片信息
$imginfo = getimagesize($img_a);//getimagesize返回一个数组:下标0是宽,1是高,2是类型
$w=$imginfo[0];//原图片宽
$h=$imginfo[1];//原图片高

switch($imginfo[2]){//获取图片类型并创建对应图片资源
case 1: //gif
$im=imagecreatefromgif($img_a);
break;
case 2://jpg
$im=imagecreatefromjpeg($img_a);
break;
case 3: //png2wbmp
$im=imagecreatefrompng($img_a);
break;
default:
die("imagecreate图片类型错误");
}

//2、获取缩放比例
if($w_a/$w > $h_a/$h){
$scale = $h_a/$h;
}else{
$scale = $w_a/$w;
}

$w_b = $w*$scale;//缩放图片的宽和高
$h_b = $h*$scale;

//3、创建新图片
$im_new = imagecreatetruecolor($w_b,$h_b);

//重采样图片:参数1新图片源,2原图片源,3和4新图片位置,5和6老图片位置,7和8新图片宽和高,9和10是老图片宽和高
imagecopyresampled($im_new,$im,0,0,0,0,$w_b,$h_b,$w,$h);

$img_info=pathinfo($img_a);//获取原图片名
$img_name=$img_info["dirname"]."/".$pre."_".$img_info["basename"];//缩略图名

switch($imginfo[2]){//输出新图片
case 1: //gif
imagegif($im_new,$img_name);
break;
case 2://jpg
imagejpeg($im_new,$img_name);
break;
case 3: //png2wbmp
imagepng($im_new,$img_name);
break;
default:
die("输出图片类型错误");
}

imagedestroy($im); //释放原图片资源
imagedestroy($im_new);//释放新图片资源

return $img_name; //返回缩略图片名
}

上面的代码中,我们用到了几个GD库中的图片处理函数:

getimagesize(图片名) ---获取图片信息,会返回一个数组,如:
Array ( [0] => 630 [1] => 254 [2] => 2 [3] => width="630" height="254" [bits] => 8 [channels] => 3 [mime] => image/jpeg )
元素0是图片宽,1是图片高,2是图片类型

imagecreatefromgif("aa.jpg") ---创建一个图片源
imagecreatetruecolor(width,height); ---创建一个画布图片源
imagejpeg(图片源,图片名) ---创建新图片
imagecopyresampled(新图片源,原图片源,新X坐标位,新Y,原X,原Y,新宽,新高,原宽,原高) ---重新采样图片
imagedestroy(图片源)  ---释放资源内存

具体可以到php手册里查看一下这些函数的相关解说。

把上面的代码放到你的函数库文件里,如functions.php,然后,在需要使用的地方调用这个函数,代码如下:

image_scale("/upload/logo.png",150,150,"sel_");

这样,我们就可以为路径upload文件夹下的logo.png图片创建一个150px的缩略图片。当然,在实际应用中,这个图片源应该是通过代码获取的,如:在上传图片时,同时生成一个缩略图。嗯,上传图片我们会在下一章做相应的解说。


文章作者:高时银博客
本文地址:http://wanlimm.com/77201511254893.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!

目前还没有评论。赶快来坐沙发吧。

发表评论