• wordpress CMS主题:ssmay主题wordpress CMS主题:ssmay主题
  • 首页 > PHP开发 > 如何通过php给图片创建缩略图?

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

    作者: 分类:PHP开发 点击: 2,064 次
    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的缩略图片。当然,在实际应用中,这个图片源应该是通过代码获取的,如:在上传图片时,同时生成一个缩略图。嗯,上传图片我们会在下一章做相应的解说。



      QQ二维码

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

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

    或许你会感兴趣的文章:

    发表评论

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

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