• 沙里软件

  • ShaliSoft.com [手机站]   办公桌收纳抽屉
  • 首页
  • 博文
  • 演示
  • 管理
  • PHP 生成缩略图的类

    网络   2013/9/25 21:15:41

    <?php    

    /**  
    * 功能:生成缩略图  
    * 作者:phpox  
    * 日期:Thu May 17 09:57:05 CST 2007  
    */  

    class CreatMiniature    
    {    
       //公共变量    
       var $srcFile="";        //原图    
       var $echoType;            //输出图片类型,link--不保存为文件;file--保存为文件    
       var $im="";                //临时变量    
       var $srcW="";            //原图宽    
       var $srcH="";            //原图高    

       //设置变量及初始化    
       function SetVar($srcFile,$echoType)    
       {    
           if (!file_exists($srcFile)){    
               echo '源图片文件不存在!';    
               exit();    
           }    
           $this->srcFile=$srcFile;    
           $this->echoType=$echoType;    

           $info = "";    
           $data = GetImageSize($this->srcFile,$info);    
           switch ($data[2])    
           {    
            case 1:    
              if(!function_exists("imagecreatefromgif")){    
               echo "你的GD库不能使用GIF格式的图片,请使用Jpeg或PNG格式!<a href='javascript:go(-1);'>返回</a>";    
               exit();    
              }    
              $this->im = ImageCreateFromGIF($this->srcFile);    
              break;    
           case 2:    
             if(!function_exists("imagecreatefromjpeg")){    
              echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!<a href='javascript:go(-1);'>返回</a>";    
              exit();    
             }    
             $this->im = ImageCreateFromJpeg($this->srcFile);        
             break;    
           case 3:    
             $this->im = ImageCreateFromPNG($this->srcFile);        
             break;    
         }    
         $this->srcW=ImageSX($this->im);    
         $this->srcH=ImageSY($this->im);    
       }    

       //生成扭曲型缩图    
       function Distortion($toFile,$toW,$toH)    
       {    
           $cImg=$this->CreatImage($this->im,$toW,$toH,0,0,0,0,$this->srcW,$this->srcH);    
           return $this->EchoImage($cImg,$toFile);    
           ImageDestroy($cImg);    
       }    

       //生成按比例缩放的缩图    
       function Prorate($toFile,$toW,$toH)    
       {    
           $toWH=$toW/$toH;    
           $srcWH=$this->srcW/$this->srcH;    
           if($toWH<=$srcWH)    
           {    
               $ftoW=$toW;    
               $ftoH=$ftoW*($this->srcH/$this->srcW);    
           }    
           else  
           {    
                 $ftoH=$toH;    
                 $ftoW=$ftoH*($this->srcW/$this->srcH);    
           }    
           if($this->srcW>$toW||$this->srcH>$toH)    
           {    
               $cImg=$this->CreatImage($this->im,$ftoW,$ftoH,0,0,0,0,$this->srcW,$this->srcH);    
               return $this->EchoImage($cImg,$toFile);    
               ImageDestroy($cImg);    
           }    
           else  
           {    
               $cImg=$this->CreatImage($this->im,$this->srcW,$this->srcH,0,0,0,0,$this->srcW,$this->srcH);    
               return $this->EchoImage($cImg,$toFile);    
               ImageDestroy($cImg);    
           }    
       }    

       //生成最小裁剪后的缩图    
       function Cut($toFile,$toW,$toH)    
       {    
             $toWH=$toW/$toH;    
             $srcWH=$this->srcW/$this->srcH;    
             if($toWH<=$srcWH)    
             {    
                  $ctoH=$toH;    
                  $ctoW=$ctoH*($this->srcW/$this->srcH);    
             }    
             else  
             {    
                 $ctoW=$toW;    
                 $ctoH=$ctoW*($this->srcH/$this->srcW);    
             }    
           $allImg=$this->CreatImage($this->im,$ctoW,$ctoH,0,0,0,0,$this->srcW,$this->srcH);    
           $cImg=$this->CreatImage($allImg,$toW,$toH,0,0,($ctoW-$toW)/2,($ctoH-$toH)/2,$toW,$toH);    
           return $this->EchoImage($cImg,$toFile);    
           ImageDestroy($cImg);    
           ImageDestroy($allImg);    
       }    

       //生成背景填充的缩图    
       function BackFill($toFile,$toW,$toH,$bk1=255,$bk2=255,$bk3=255)    
       {    
           $toWH=$toW/$toH;    
           $srcWH=$this->srcW/$this->srcH;    
           if($toWH<=$srcWH)    
           {    
               $ftoW=$toW;    
               $ftoH=$ftoW*($this->srcH/$this->srcW);    
           }    
           else  
           {    
                 $ftoH=$toH;    
                 $ftoW=$ftoH*($this->srcW/$this->srcH);    
           }    
           if(function_exists("imagecreatetruecolor"))    
           {    
               @$cImg=ImageCreateTrueColor($toW,$toH);    
               if(!$cImg)    
               {    
                   $cImg=ImageCreate($toW,$toH);    
               }    
           }    
           else  
           {    
               $cImg=ImageCreate($toW,$toH);    
           }    
           $backcolor = imagecolorallocate($cImg, $bk1, $bk2, $bk3);        //填充的背景颜色    
           ImageFilledRectangle($cImg,0,0,$toW,$toH,$backcolor);    
           if($this->srcW>$toW||$this->srcH>$toH)    
           {        
               $proImg=$this->CreatImage($this->im,$ftoW,$ftoH,0,0,0,0,$this->srcW,$this->srcH);    
                if($ftoW<$toW)    
                {    
                    ImageCopy($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH);    
                }    
                else if($ftoH<$toH)    
                {    
                    ImageCopy($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH);    
                }    
                else  
                {    
                    ImageCopy($cImg,$proImg,0,0,0,0,$ftoW,$ftoH);    
                }    
           }    
           else  
           {    
                ImageCopyMerge($cImg,$this->im,($toW-$ftoW)/2,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100);    
           }    
           return $this->EchoImage($cImg,$toFile);    
           ImageDestroy($cImg);    
       }    


       function CreatImage($img,$creatW,$creatH,$dstX,$dstY,$srcX,$srcY,$srcImgW,$srcImgH)    
       {    
           if(function_exists("imagecreatetruecolor"))    
           {    
               @$creatImg = ImageCreateTrueColor($creatW,$creatH);    
               if($creatImg)    
                   ImageCopyResampled($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);  
               else  
               {    
                   $creatImg=ImageCreate($creatW,$creatH);    
                   ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);  
               }    
            }    
            else  
            {    
               $creatImg=ImageCreate($creatW,$creatH);    
               ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);  
            }    
            return $creatImg;    
       }    

       //输出图片,link---只输出,不保存文件。file--保存为文件    
       function EchoImage($img,$to_File)    
       {    
           switch($this->echoType)    
           {    
               case "link":    
                   if(function_exists('imagejpeg')) return ImageJpeg($img);    
                   else return ImagePNG($img);    
                   break;    
               case "file":    
                   if(function_exists('imagejpeg')) return ImageJpeg($img,$to_File);    
                   else return ImagePNG($img,$to_File);    
                   break;    
           }    
       }    
    }    
    ?>

    阅读(916) 分享(0)

    上一篇: PDO数据库操作类
    下一篇: 必须掌握的php函数集

  • 精彩推荐

    ◆ Windows Server 2003操作系统单网卡搭建VPN服务器
    ◆ PHP中9大缓存技术总结
    ◆ 微信订阅号授权登录,订阅号怎么实现网页授权登录?
    ◆ jQuery对应的原生js写法
    ◆ 国外程序员整理的PHP资源大全
    ◆ ASP语言使用淘宝接口遇中文字符签名失败解决方法
    ◆ 大型网站图片服务器架构的演
    ◆ php+Mysql 高速分页优化,百万至千万级快速分页
    ◆ 从MyISAM转到InnoDB需要注意什么
    ◆ 新型DDoS攻击LFA 网易网络被攻击原因
  • 用心做事 不能唯利是图

    • 吊儿
    • 用QQ联系我17905772
  • 搜索


  • 最新文章

    • 导出Excel 格式 mso-number-format
    • 服务器iis支持tls1.2,windows server 2008 r2 中IIS启用TLS 1.2(安装SSL后用TLS 1.2)
    • MySQL配置优化
    • EditPlus 添加文件比较工具winmerge
    • 滚动悬浮固定JS特效

  • 热门文章

    • php sso单点登录实现代码
    • 中国菜刀(China chopper) 最新黑客工具
    • redis.conf中文版(基于2.4)
    • 搜索引擎名单大全
    • php图片上传类,支持加水印,生成略缩图

  • 最新图库


  • 最新评论


  • 友情链接

  • 沙里软件

  • 最近访客

    Powered by ShaliSoft.com 豫ICP备13008529号

    免责声明:本站部分内容来源于互联网,转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责,也不构成任何其他建议。如果发现侵犯版权,联系QQ17905772进行删除。