Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19286673
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类:

2008-05-29 21:45:24

写通用性程序考虑兼容性是很头痛的事情,关于用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);
}

阅读(341) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~