php生成缩略图的代码(兼容性好)

发布时间:2020-03-06编辑:脚本学堂
PHP生成缩略图的代码很多,不过能完全兼容gd1.6和gd2.x,并能保证缩图清晰性的代码几乎没有,以下代码可以实现较好的兼容性。

    PHP生成缩略图的代码很多,不过能完全兼容gd1.6和gd2.x,并能保证缩图清晰性的代码几乎没有,以下代码可以实现较好的兼容性。
   
    分享出来,供大家学习参考。
 

复制代码 代码如下:
<?php
function ImageResize($srcFile,$toW,$toH,$toFile="")
{
   if($toFile==""){ $toFile = $srcFile; }
   $info = "";
   $data = getimagesize($srcFile,$info);
   switch ($data[2])
   {
    case 1:
      if(!function_exists("imagecreatefromgif")){
       echo "你的GD库不能使用GIF格式的图片,请使用Jpeg或PNG格式!<a href='javascript:go(-1);'>返回</a>";
       exit();
      }
      $im = ImageCreateFromGIF($srcFile);
      break;
    case 2:
      if(!function_exists("imagecreatefromjpeg")){
       echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!<a href='javascript:go(-1);'>返回</a>";
       exit();
      }
      $im = ImageCreateFromJpeg($srcFile);  
      break;
    case 3:
      $im = ImageCreateFromPNG($srcFile);  
      break;
  }
  $srcW=ImageSX($im);
  $srcH=ImageSY($im);
  $toWH=$toW/$toH;
  $srcWH=$srcW/$srcH;
  if($toWH<=$srcWH){
       $ftoW=$toW;
       $ftoH=$ftoW*($srcH/$srcW);
  }
  else{
      $ftoH=$toH;
      $ftoW=$ftoH*($srcW/$srcH);
  }  
  if($srcW>$toW||$srcH>$toH)
  {
     if(function_exists("imagecreatetruecolor")){
        @$ni = ImageCreateTrueColor($ftoW,$ftoH);
        if($ni) ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
        else{
         $ni=ImageCreate($ftoW,$ftoH);
          ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
        }
     }else{
        $ni=ImageCreate($ftoW,$ftoH);
        ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
     }
     if(function_exists('imagejpeg')) ImageJpeg($ni,$toFile);
     else ImagePNG($ni,$toFile);
     ImageDestroy($ni);
  }
  ImageDestroy($im);
}