站长论坛

标题: 兼容性最强的PHP生成缩略图的代码 [打印本页]

作者: superadmin    时间: 2007-10-4 20:17
标题: 兼容性最强的PHP生成缩略图的代码
写通用性程序考虑兼容性是很头痛的事情,关于用PHP生成缩略图的代码很多,不过能完全兼容gd1.6和gd2.x,并能保证缩图清晰性的代码几乎没有,我把我以前的代码改了一下,就能实现了。
  1. function ImageResize($srcFile,$toW,$toH,$toFile="")
  2. {
  3.   if($toFile==""){ $toFile = $srcFile; }
  4.   $info = "";
  5.   $data = GetImageSize($srcFile,$info);
  6.   switch ($data[2])
  7.   {
  8.   case 1:
  9.     if(!function_exists("imagecreatefromgif")){
  10.     echo "你的GD库不能使用GIF格式的图片,请使用Jpeg或PNG格式!返回";
  11.     exit();
  12.     }
  13.     $im = ImageCreateFromGIF($srcFile);
  14.     break;
  15.   case 2:
  16.     if(!function_exists("imagecreatefromjpeg")){
  17.     echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!返回";
  18.     exit();
  19.     }
  20.     $im = ImageCreateFromJpeg($srcFile);   
  21.     break;
  22.   case 3:
  23.     $im = ImageCreateFromPNG($srcFile);   
  24.     break;
  25. }
  26. $srcW=ImageSX($im);
  27. $srcH=ImageSY($im);
  28. $toWH=$toW/$toH;
  29. $srcWH=$srcW/$srcH;
  30. if($toWH<=$srcWH){
  31.     $ftoW=$toW;
  32.     $ftoH=$ftoW*($srcH/$srcW);
  33. }
  34. else{
  35.     $ftoH=$toH;
  36.     $ftoW=$ftoH*($srcW/$srcH);
  37. }   
  38. if($srcW>$toW||$srcH>$toH)
  39. {
  40.   if(function_exists("imagecreatetruecolor")){
  41.     @$ni = ImageCreateTrueColor($ftoW,$ftoH);
  42.     if($ni) ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  43.     else{
  44.       $ni=ImageCreate($ftoW,$ftoH);
  45.       ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  46.     }
  47.   }else{
  48.     $ni=ImageCreate($ftoW,$ftoH);
  49.     ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  50.   }
  51.   if(function_exists('imagejpeg')) ImageJpeg($ni,$toFile);
  52.   else ImagePNG($ni,$toFile);
  53.   ImageDestroy($ni);
  54. }
  55. ImageDestroy($im);
复制代码





欢迎光临 站长论坛 (http://tzlink.com/bbs/) Powered by Discuz! X3.2