分享php多功能圖片處理類,_PHP教程

來源:互聯網
上載者:User

分享php多功能圖片處理類,


本文執行個體為大家分享了多功能php圖片處理類,供大家參考,具體內容如下

<?php /**  * Image.class.php 影像處理類  * @author Administrator  *  */ class Image{      private $path='';   /**    * 構造方法    * @param unknown $path    */   function __construct($path=''){     if (!empty($path)) {       $this->path=$path;     }   }   /**    +-----------------------------------------------    * 等比縮放函數    +-----------------------------------------------    * @param unknown $name 需處理圖片的名稱    * @param unknown $width 縮放後的寬度    * @param unknown $height 縮放後的高度    * @param string $thumb_prixs 縮放後的首碼名    * @return mixed $newname 返回的縮放後的檔案名稱    */   function thumb($name,$width,$height,$thumb_prixs='th_'){     //擷取圖片資訊     $Info=$this->ImageInfo($name); //圖片的寬度,高度,類型     //擷取圖片資源,各種類型的圖片都可以建立資源,jpg,gif,png     $imagres=$this->Img_resouce($name, $Info);     //擷取計算圖片等比例之後的大小,     $size=$this->getNewSize($name,$width,$height,$Info);     //擷取新的圖片資源,處理透明背景     $newimg=$this->getImage($imagres,$size,$Info);     //另存新檔一個新的圖片,返回新的縮放後的圖片名稱     $newname=$this->SaveNewImage($newimg,$thumb_prixs.$name,$Info);     return $newname;    }      /**    +-----------------------------------------------------------------------    * 浮水印標記函數    +-----------------------------------------------------------------------    * @param unknown $backname  背景檔案名稱    * @param unknown $watername 浮水印檔案名稱    * @param number $waterpos  浮水印位置    * @param string $wa_prixs  浮水印首碼名    * @return boolean    */   function waterMark($backname,$watername,$waterpos=0,$wa_prixs='wa_') {          if (file_exists($this->path.$backname) && file_exists($this->path.$watername)) {              $backinfo=$this->ImageInfo($backname);              $waterinfo=$this->ImageInfo($watername);              if(!$pos=$this->getPos($backinfo, $waterinfo, $waterpos)){         echo "浮水印圖片不應該比背景圖片小";         return false;       }        $backimg=$this->Img_resouce($backname, $backinfo);                $waterimg=$this->Img_resouce($watername, $waterinfo);        var_dump($backimg);exit();        $backimg=$this->CopyImage($backimg, $waterimg, $pos, $waterinfo);                $this->SaveNewImage($backimg, $wa_prixs.$backname, $backinfo);     }else{              echo "圖片或浮水印不存在";       return false;     }   }   /**    +-----------------------------------------------------------------------    * 擷取圖片資訊函數    +-----------------------------------------------------------------------    * @param unknown $name    * @return unknown    */       private function ImageInfo($img) {     $imageInfo=getimagesize($img);     if ($imageInfo!==false) {       $imageType=strtolower(substr(image_type_to_extension($imageInfo[2]),1));       $imageSize=filesize($img);       $Info=array(         "width" => $imageInfo[0],         "height" => $imageInfo[1],         "type" => $imageType,         "size" => $imageSize,         "mime" => $imageInfo['mime']       );       return $Info;     }else{       return false;     }     }         /**    +--------------------------------------------------------    * 建立原映像格式函數    +--------------------------------------------------------    * @param unknown $name    * @param unknown $imaginfo    * @return boolean|resource    */   private function Img_resouce($name,$imageinfo){     $iamgeres=$this->path.$name;     //var_dump($iamgeres);exit();      switch ($imageinfo['type']) {       case 'gif':        $img=imagecreatefromgif($name);          break;       case 'jpg':        $img=imagecreatefromjpeg($name);          break;       case 'png':        $img=imagecreatefrompng($name);          break;                  }      return $img;   }   /**    +--------------------------------------------------    * 擷取等比縮放尺寸函數    +--------------------------------------------------    * @param unknown $name    * @param unknown $width    * @param unknown $height    * @param unknown $imaginfo    * @return Ambigous     */   private function getNewSize($name,$width,$height,$imaginfo){        $size['width']=$imaginfo['width'];        $size['height']=$imaginfo['height'];     if ($width<$imaginfo['width']) {       $size['width']=$width;     }     if ($height<$imaginfo['height']) {       $size['height']=$height;     }     //映像等比例縮放演算法     if ($imaginfo['width']*$size['width']>$imaginfo['height']*$size['height']) {       $size['height']=round($imaginfo['height']*$size['width']/$imaginfo['width']);     }else{       $size['width']=round($imaginfo['width']*$size['height']/$imaginfo['height']);     }     return $size;    }   private function getImage($imageres,$size,$imageinfo){     //建立一個真彩色映像     $newimg=imagecreatetruecolor($size['width'], $size['height']);     //將某個顏色定義為透明色     $otsc=imagecolortransparent($imageres);     //擷取映像的調色盤的顏色數目     if ($otsc>=0&&$otsc<=imagecolorstotal($imageres)) {       //取得某索引的顏色       $stran=imagecolorsforindex($imageres, $otsc);       //為映像分配顏色       $newt=imagecolorallocate($imageres, $stran['red'], $stran['green'], $stran['blue']);       //地區填充函數       imagefill($newimg, 0, 0, $newt);       //為映像定義透明色       imagecolortransparent($newimg,$newt);         }     imagecopyresized($newimg, $imageres, 0, 0, 0, 0, $size['width'], $size['height'], $imageinfo['width'], $imageinfo['height']);            imagedestroy($imageres);          return $newimg;     }    /**     +----------------------------------------------     *儲存映像函數     +----------------------------------------------     * @param unknown $newimg     * @param unknown $newname     * @param unknown $imageinfo     * @return unknown      */    private function SaveNewImage($newimg,$newname,$imageinfo){     switch ($imageinfo['type']){       case 1://gif         $result=imagegif($newimg,$this->path.$newname);         break;       case 2://jpg         $result=imagejpeg($newimg,$this->path.$newname);         break;       case 3://png         $result=imagepng($newimg,$this->path.$newname);         break;     }     imagedestroy($newimg);     return $newname;    }        /**     +-----------------------------------------------------------------     * 擷取浮水印位置函數     +-----------------------------------------------------------------     * @param unknown $backinfo  背景資訊     * @param unknown $waterinfo  浮水印資訊     * @param unknown $waterpos  浮水印位置     * @return boolean|multitype:number 返回座標數組     */    private function getPos($backinfo,$waterinfo,$waterpos) {          if ($backinfo['width']<$waterinfo['width']||$backinfo['height']<$waterinfo['height']) {       return false;     }     switch ($waterpos) {              case 1://左上方         $posX=0;         $posY=0;          break;       case 2://中上方         $posX=$backinfo['width']-$waterinfo['width']/2;         $posY=0;          break;       case 3://右上方         $posX=$backinfo['width']-$waterinfo['width'];         $posY=0;          break;       case 4://左中方         $posX=0;         $posY=$backinfo['height']-$waterinfo['height']/2;          break;       case 5://正中間         $posX=$backinfo['width']-$waterinfo['width']/2;         $posY=$backinfo['height']-$waterinfo['height']/2;          break;       case 6://右中方         $posX=$backinfo['width']-$waterinfo['width'];         $posY=$backinfo['height']-$waterinfo['height']/2;          break;       case 7://底部靠左         $posX=0;         $posY=$backinfo['height']-$waterinfo['height'];          break;       case 8://底部置中         $posX=$backinfo['width']-$waterinfo['width']/2;         $posY=$backinfo['height']-$waterinfo['height'];          break;       case 9://底部靠右         $posX=$backinfo['width']-$waterinfo['width'];         $posY=$backinfo['height']-$waterinfo['height'];          break;       case 0:       default :         $posX=rand(0,$backinfo['width']-$waterinfo['width']);         $posY=rand(0,$backinfo['height']-$waterinfo['height']);          break;     }     return array('posX'=>$posX,'posY'=>$posY);    }    /**     +-------------------------------------------------------------------     * 拷貝映像     +-------------------------------------------------------------------     * @param unknown $backimg   背景資源     * @param unknown $waterimg  浮水印資源     * @param unknown $pos     浮水印位置     * @param unknown $waterinfo  浮水印資訊     * @return unknown     */    private function CopyImage($backimg,$waterimg,$pos,$waterinfo) {           imagecopy($backimg, $waterimg, $pos['posX'], $pos['posY'], 0, 0, $waterinfo['width'], $waterinfo['height']);     imagedestroy($waterimg);          return $backimg;    }      } ?> 

以上就是本文的全部內容,希望對大家學習PHP程式設計有所協助。

http://www.bkjia.com/PHPjc/1127896.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1127896.htmlTechArticle分享php多功能圖片處理類, 本文執行個體為大家分享了多功能php圖片處理類,供大家參考,具體內容如下 php /** * Image.class.php 影像處理類 * @a...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.