首页
站长论坛BBS
救助
投稿
discuz视频教程
discuz技术支持
版块
登录
快速注册

PHP生成图片缩略图的类方法

建站高手 2015-4-27 [PHP] 来自PC 复制链接
13854
discuz使用视频教程
31idc

马上注册,一起探讨正确快速的建站方法

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
要使用PHP生成图片缩略图,要保证你的PHP服务器安装了GD2图形库,使用一个类生成图片的缩略图,具体看下面代码

使用方法
$resizeimage = new resizeimage("图片源文件地址", "200", "100", "0","缩略图地址");
//就只用上面的一句话,就能生成缩略图,其中,源文件和缩略图地址可以相同,200,100分别代表宽和高

[代码] [PHP]代码

  1. //使用如下类就可以生成图片缩略图,

  2. <?php
  3. class resizeimage
  4. {
  5.     //图片类型
  6.     var $type;
  7.     //实际宽度
  8.     var $width;
  9.     //实际高度
  10.     var $height;
  11.     //改变后的宽度
  12.     var $resize_width;
  13.     //改变后的高度
  14.     var $resize_height;
  15.     //是否裁图
  16.     var $cut;
  17.     //源图象
  18.     var $srcimg;
  19.     //目标图象地址
  20.     var $dstimg;
  21.     //临时创建的图象
  22.     var $im;

  23.     function resizeimage($img, $wid, $hei,$c,$dstpath)
  24.     {
  25.         $this->srcimg = $img;
  26.         $this->resize_width = $wid;
  27.         $this->resize_height = $hei;
  28.         $this->cut = $c;
  29.         //图片的类型
  30.    
  31. $this->type = strtolower(substr(strrchr($this->srcimg,"."),1));

  32.         //初始化图象
  33.         $this->initi_img();
  34.         //目标图象地址
  35.         $this -> dst_img($dstpath);
  36.         //--
  37.         $this->width = imagesx($this->im);
  38.         $this->height = imagesy($this->im);
  39.         //生成图象
  40.         $this->newimg();
  41.         ImageDestroy ($this->im);
  42.     }
  43.     function newimg()
  44.     {
  45.         //改变后的图象的比例
  46.         $resize_ratio = ($this->resize_width)/($this->resize_height);
  47.         //实际图象的比例
  48.         $ratio = ($this->width)/($this->height);
  49.         if(($this->cut)=="1")
  50.         //裁图
  51.         {
  52.             if($ratio>=$resize_ratio)
  53.             //高度优先
  54.             {
  55.                 $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);
  56.                 imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,$this->resize_height, (($this->height)*$resize_ratio), $this->height);
  57.                 ImageJpeg ($newimg,$this->dstimg);
  58.             }
  59.             if($ratio<$resize_ratio)
  60.             //宽度优先
  61.             {
  62.                 $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);
  63.                 imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, $this->resize_height, $this->width, (($this->width)/$resize_ratio));
  64.                 ImageJpeg ($newimg,$this->dstimg);
  65.             }
  66.         }
  67.         else
  68.         //不裁图
  69.         {
  70.             if($ratio>=$resize_ratio)
  71.             {
  72.                 $newimg = imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio);
  73.                 imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, ($this->resize_width)/$ratio, $this->width, $this->height);
  74.                 ImageJpeg ($newimg,$this->dstimg);
  75.             }
  76.             if($ratio<$resize_ratio)
  77.             {
  78.                 $newimg = imagecreatetruecolor(($this->resize_height)*$ratio,$this->resize_height);
  79.                 imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, ($this->resize_height)*$ratio, $this->resize_height, $this->width, $this->height);
  80.                 ImageJpeg ($newimg,$this->dstimg);
  81.             }
  82.         }
  83.     }
  84.     //初始化图象
  85.     function initi_img()
  86.     {
  87.         if($this->type=="jpg")
  88.         {
  89.             $this->im = imagecreatefromjpeg($this->srcimg);
  90.         }
  91.         if($this->type=="gif")
  92.         {
  93.             $this->im = imagecreatefromgif($this->srcimg);
  94.         }
  95.         if($this->type=="png")
  96.         {
  97.             $this->im = imagecreatefrompng($this->srcimg);
  98.         }
  99.     }
  100.     //图象目标地址
  101.     function dst_img($dstpath)
  102.     {
  103.         $full_length  = strlen($this->srcimg);

  104.         $type_length  = strlen($this->type);
  105.         $name_length  = $full_length-$type_length;


  106.         $name         = substr($this->srcimg,0,$name_length-1);
  107.         $this->dstimg = $dstpath;


  108. //echo $this->dstimg;
  109.     }
  110. }
  111. ?>
复制代码




上一篇:配置Sendmail服务器以防治垃圾邮件
下一篇:PHP图片压缩的两种方法
百度娘 发表于 2015-4-27 18:45:36 来自PC
强烈支持,站帮网有你更精彩
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

快速回复 返回顶部 返回列表