兼容性最强的PHP生成缩略图的代码 不指定

jed , 2006-10-12 08:12 , 代码编程 , 评论(0) , 阅读(3068) , Via 本站原创 | |
写通用性程序考虑兼容性是很头痛的事情,关于用PHP生成缩略图的代码很多,不过能完全兼容gd1.6和gd2.x,并能保证缩图清晰性的代码几乎没有,我把我以前的代码改了一下,就能实现了。

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格式!返回";
      exit();
     }
     $im = ImageCreateFromGIF($srcFile);
     break;
   case 2:
     if(!function_exists("imagecreatefromjpeg")){
      echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!返回";
      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);
}






发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]