首页 > PHP开发 > 如何通过php给图片创建缩略图?

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

作者: 分类:PHP开发 点击: 1,768 次
wordpress CMS主题:ssmay主题

    缩略图在我们开发网站时会经常用到,如网站的文章列表页,在文章标题前显示一个缩略图,这是很多网站所采用的一个文章列表模式,如:时美网,这样做,主要是让页面图片与文字结合,使用页面看起来不再单调。缩略图,我们会在很多地方用到,如:产品列表、购物车…… 因为原图片可能会很大,如果使用原图片,网页打开速度可能会受到影响,这时,如果用缩略图,打开速度就会有所提升。下面,就来看看缩略图的实现方法——通过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
版权所有 © 转载时必须以链接形式注明作者和原始出处!

上一篇:
下一篇:
wordpress CMS主题:ssmay主题

或许你会感兴趣的文章:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.