`
tianhao86
  • 浏览: 8342 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

常用类----图片处理类

    博客分类:
  • php
阅读更多
php  代码
  1. <?php   
  2. /**     
  3.  *@package Image    
  4.  *@use   图片处理   
  5.  *@author 刘建武   tianhao86@hotmail.com   
  6.  **/      
  7. class Image {       
  8.     public function __construct() {       
  9.     }       
  10.       
  11.     /******************************************************************************     
  12.     *函数名称:thumb     
  13.     *函数功能:自动生成缩略图函数     
  14.     *参数    :$srcFile,$dstimg,$dstW,$dstH,$power,$out,$quality     
  15.     *参数意义:     
  16.     $srcFile:   图片源文件;     
  17.     $dstimg:    图片目标文件;     
  18.     $dstW:      要求缩略图的宽;     
  19.     $dstH:      要求缩略图的高;     
  20.     $power: 缩略类型,缺省值 0     
  21.     0 表示按比例缩放,宽高不大于要求的宽高;     
  22.     1 表示按比例缩放宽高不小于要求,在中部切割;     
  23.     其他任何值,不按比例缩放为要求的宽高;     
  24.     $out:       是否把缩略图输出到浏览器,缺省值 0     
  25.     0 或其他任何值,不输出;     
  26.     1 输出;     
  27.     $quality:   图片的压缩质量(1到100),缺省值 100     
  28.     *返回类型:bool,false 表示执行错误;true 表示执行成功;       
  29.     *******************************************************************************/      
  30.     static public function thumb($srcFile,$dstimg,$dstW,$dstH,$power=0,$out=0,$quality=100) {       
  31.         if(!file_exists($srcFile)) return false;        //如果源文件部存在就返回false       
  32.         $data = GetImageSize($srcFile);       
  33.       
  34.         $srcW   = $data[0];             //图片宽度,单位是像素 (pixel)       
  35.         $srcH   = $data[1];             //图片高度,单位是像素 (pixel)       
  36.         $dsX    = 0;                    //paste开始的x坐标,单位是像素 (pixel)       
  37.         $dsY    = 0;                    //paste开始的y坐标,单位是像素 (pixel)       
  38.         $srX    = 0;                    //copy开始的x坐标,单位是像素 (pixel)       
  39.         $srY    = 0;                    //copy开始的y坐标,单位是像素 (pixel)       
  40.       
  41.         if(!$dstW>0 || !$dstH>0return false;          //如果宽高有一个小于零,返回false       
  42.       
  43.         if($power==0) {                     //如果是自动按比例  缩放处理预定义的宽高参数       
  44.             if($dstW/$dstH >= $srcW/$srcH) {                    //原图片太高       
  45.                 $dstW   = $srcW * ($dstH/$srcH);       
  46.             }       
  47.             else {              //原图片太宽       
  48.                 $dstH   = $srcH * ($dstW/$srcW);       
  49.             }//end if       
  50.         }       
  51.         elseif($power==1) {     //如果是按比例缩放后 切其中部的位置处理       
  52.             if($dstW/$dstH >= $srcW/$srcH) {                    //原图片太高       
  53.                 $srcH   = $dstH * $srcW/$dstW;       
  54.                 $srY    = ($data[1]-$srcH)/2;       
  55.             }       
  56.             else {              //原图片太宽       
  57.                 $srcW   = $dstW * $srcH/$dstH;       
  58.                 $srX    = ($data[0]-$srcW)/2;       
  59.             }//end if       
  60.         }//end if       
  61.         switch($data[2]) {       
  62.             case 1//图片类型,1是GIF图       
  63.             $im = @imagecreatefromgif($srcFile);       
  64.             break;       
  65.             case 2//图片类型,2是JPG图       
  66.             $im = @imagecreatefromjpeg($srcFile);       
  67.             break;       
  68.             case 3//图片类型,3是PNG图       
  69.             $im = @imagecreatefrompng($srcFile);       
  70.             break;       
  71.         }//end switch       
  72.         ///判断系统是否支持真彩函数       
  73.         if (!$ni = @imagecreatetruecolor($dstW,$dstH)) {       
  74.             $ni     = @imagecreate($dstW,$dstH);       
  75.         }//end if       
  76.         if (function_exists("imagecopyresampled")) {                                ///判断系统是否支持真彩copy函数       
  77.             imagecopyresampled($ni,$im,$dsX,$dsY,$srX,$srY,$dstW,$dstH,$srcW,$srcH);       
  78.         }       
  79.         else {       
  80.             imagecopyresized($ni,$im,$dsX,$dsY,$srX,$srY,$dstW,$dstH,$srcW,$srcH);       
  81.         }//end if       
  82.         if(is_int($quality)==false) {                           //如果质量参数不是integer类型,则强制设置类型       
  83.             settype($quality, "integer");       
  84.         }//end if       
  85.         if($quality>100 || $quality<1) {                                //如果质量参数没有在1到100之间,则设置为100       
  86.             $quality    = 100;       
  87.         }//end if       
  88.         imagejpeg($ni,$dstimg,$quality);       
  89.         if($out==1) {                                       //如果要求输出到浏览器,,则输出       
  90.             ImageJpeg($ni);       
  91.         }//end if       
  92.         return $dstimg;       
  93.     }//end function thumb       
  94.       
  95.           
  96.     /**     
  97.      * 截取固定大小的图片     
  98.      * $srcFile:   图片源文件;     
  99.      */      
  100.     static  public function MakePic($pSrcFile, $pWidth, $pHeight, $pThumpFile){       
  101.       
  102.         if(!file_exists($pSrcFile)) return false;       
  103.         $image = $pSrcFile; // 原图       
  104.         $imgstream = file_get_contents($image);       
  105.         $im = imagecreatefromstring($imgstream);       
  106.         $x = imagesx($im);       
  107.         $y = imagesy($im);       
  108.       
  109.         $data = GetImageSize($pSrcFile);       
  110.            
  111.         $srcW   = $data[0];             //图片宽度,单位是像素 (pixel)       
  112.         $srcH   = $data[1];             //图片高度,单位是像素 (pixel)       
  113.         $dsX    = 0;                    //paste开始的x坐标,单位是像素 (pixel)       
  114.         $dsY    = 0;                    //paste开始的y坐标,单位是像素 (pixel)       
  115.         $srX    = ceil($srcW/2-$pWidth/2); //copy开始的x坐标,单位是像素 (pixel)       
  116.         if($srX<0) $srX = 0;       
  117.                            
  118.         $srY    = ceil($srcH/2-$pHeight/2); //copy开始的y坐标,单位是像素 (pixel)       
  119.         if($srY<0) $srY = 0;                       
  120.         $thumbw = $pWidth; // 期望的目标图宽       
  121.         $thumbh = $pHeight; // 期望的目标图高       
  122.                
  123.         if($srcW<$thumbw) return false;       
  124.                
  125.         if(function_exists("imagecreatetruecolor")){       
  126.             $dim = imagecreatetruecolor($thumbw, $thumbh); // 创建目标图gd2       
  127.         }       
  128.         else{       
  129.             $dim = imagecreate($thumbw, $thumbh); // 创建目标图gd1       
  130.         }       
  131.         $ok = imagecopyresized ($dim,$im, $dsX, $dsY, $srX, $srY, $thumbw,$thumbh,$thumbw,$thumbh);       
  132.         switch($data[2]) {       
  133.             case 1//图片类型,1是GIF图       
  134.             imagegif($dim, $pThumpFile);;       
  135.             break;       
  136.             case 2//图片类型,2是JPG图       
  137.             imagejpeg($dim, $pThumpFile);       
  138.             break;       
  139.             case 3//图片类型,3是PNG图       
  140.             imagepng($dim, $pThumpFile);       
  141.             break;       
  142.         }//end switch       
  143.       
  144.         return $ok;       
  145.     }       
  146. }       
  147. ?>       
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics