茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    php實現(xiàn)常見圖片格式的水印和縮略圖制作(面向?qū)ο?
    來源:易賢網(wǎng) 閱讀:1152 次 日期:2016-08-17 14:41:55
    溫馨提示:易賢網(wǎng)小編為您整理了“php實現(xiàn)常見圖片格式的水印和縮略圖制作(面向?qū)ο?”,方便廣大網(wǎng)友查閱!

    本文實例為大家分享了php水印和縮略圖制作代碼,使用面向?qū)ο蟮姆椒▉韺崿F(xiàn)常見圖片格式j(luò)pg,png,gif的水印和縮略圖的制作,供大家參考,具體內(nèi)容如下

    <?php

    header('Content-Type:text/html;charset=utf-8');

    /* 

     * To change this license header, choose License Headers in Project Properties.

     * To change this template file, choose Tools | Templates

     * and open the template in the editor.

     */

    //給圖片添加水印

    Class Water{

     //開啟水印

     private $watermark_on = '1';

     public $water_img;

     //水印位置

     public $pos = 1; 

     //壓縮比

     public $pct = 80;

     //透明度

     public $quality = 80;

     public $text = '樂趣網(wǎng)zlblog.sinaapp.com';

     public $size = 12;

     public $color = '#000000';

     public $font = 'font.ttf';

     //thumb的制作

     //默認縮略圖功能開啟

     private $thumb_on = 1;

     //生成縮略圖的方式

     public $thumb_type = 1;

     //生成縮略圖的寬度

     public $thumb_width;

     //生成縮略圖的高度

     public $thumb_height;

     //生成縮略圖的后綴名

     public $thumb_fix = '_dq';

     //縮略圖函數(shù)處理

     public function thumb( $img,$outfile='',$t_type='',$t_w='',$t_h='' ){

      //驗證圖片是否符合要求

      if(!$this->check($img) || !$this->thumb_on) return FALSE;

      //定義縮略圖的初始值

      $t_type = $t_type ? $t_type : $this->thumb_type;

      $t_w = $t_w ? $t_w : $this->thumb_width;

      $t_h = $t_h ? $t_h : $this->thumb_height;

      //獲取到原圖的信息

      $img_info = getimagesize($img);

      $img_w = $img_info[0];

      $img_h = $img_info[1];

      //取得圖像類型的文件后綴

      $img_type = image_type_to_extension($img_info[2]);

      //獲取到相關(guān)尺寸

      $thumb_size = $this->thumb_size($img_w,$img_h,$t_w,$t_h,$t_type);

      //確定原始圖像類型

      //利用自定義函數(shù)來實現(xiàn)圖片類型的確定

      $func = "imagecreatefrom".substr($img_type, 1);

      $res_img = $func($img);

      //縮略圖資源   編輯圖片資源moon

      if( $img_type == '.gif' || $img_type == '.png' ){

       $res_thumb = imagecreate($thumb_size[0], $thumb_size[1]);

       $color = imagecolorallocate($res_thumb, 255, 0, 0);

      }else{

       $res_thumb = imagecreatetruecolor($thumb_size[0], $thumb_size[1]);

      }

      //制作縮略圖

      if(function_exists( "imagecopyresampled" ) ){

       imagecopyresampled($res_thumb, $res_img, 0, 0, 0, 0, $thumb_size[0],$thumb_size[1],$thumb_size[2],$thumb_size[3]);

      }else{

       imagecopyresized($res_thumb, $res_img, 0, 0, 0, 0, $thumb_size[0],$thumb_size[1],$thumb_size[2],$thumb_size[3]);

      }

      //處理透明色

      if( $img_type =='.gif' || $img_type == '.png' ){

       imagecolortransparent($res_thumb,$color);

      }

      //配置輸出文件名

      $outfile = $outfile ? $outfile : $outfile.substr($img,0,strripos($img,'.')).$this->thumb_fix.$img_type;

      //文件的保存輸出

      $func = "image".substr($img_type, 1);

      $func($res_thumb,$outfile);

      if(isset($res_thumb)) imagedestroy ($res_thumb);

      if(isset($res_img)) imagedestroy ($res_img);

      return $outfile;

     } 

     public function watermark( $img,$pos='',$out_img='',$water_img='',$text='' ){

      if(!$this->check($img) || !$this->watermark_on) return false;

      $water_img = $water_img ? $water_img : $this->water_img;

      //水印的開啟狀態(tài)

      $waterimg_on = $this->check($water_img) ? 1 : 0;

      //判斷是否在原圖上操作

      $out_img = $out_img ? $out_img : $img;

      //判斷水印的位置

      $pos = $pos ? $pos : $this->pos;

      //水印文字

      $text = $text ? $text : $this->text;

      $img_info = getimagesize($img);

      $img_w = $img_info[0];

      $img_h = $img_info[1];

      //判斷水印圖片的類型

      if( $waterimg_on ){

       $w_info = getimagesize($water_img);

       $w_w = $w_info[0];

       $w_h = $w_info[1];

       if ( $img_w < $w_w || $img_h < $w_h ) return false;

       switch ( $w_info[2] ){

        case 1:

         $w_img = imagecreatefromgif($water_img);

         break;

        case 2:

         $w_img = imagecreatefromjpeg($water_img);

         break;

        case 3:

         $w_img = imagecreatefrompng($water_img);

         break;

       }

      }else{

       if( empty($text) || strlen($this->color)!=7 ) return FALSE;

       $text_info = imagettfbbox($this->size, 0, $this->font, $text);

       $w_w = $text_info[2] - $text_info[6];

       $w_h = $text_info[3] - $text_info[7];

      }

      //建立原圖資源

      switch ( $img_info[2] ){

       case 1:

        $res_img = imagecreatefromgif($img);

        break;

       case 2:

        $res_img = imagecreatefromjpeg($img);

        break;

       case 3:

        $res_img = imagecreatefrompng($img);

        break;

      }

      //確定水印的位置

      switch ( $pos ){

       case 1:

        $x = $y =25;

        break;

       case 2:

        $x = ($img_w - $w_w)/2; 

        $y = 25;

        break;

       case 3:

        $x = $img_w - $w_w;

        $y = 25;

        break;

       case 4:

        $x = 25;

        $y = ($img_h - $w_h)/2;

        break;

       case 5:

        $x = ($img_w - $w_w)/2; 

        $y = ($img_h - $w_h)/2;

        break;

       case 6:

        $x = $img_w - $w_w;

        $y = ($img_h - $w_h)/2;

        break;

       case 7:

        $x = 25;

        $y = $img_h - $w_h;

        break;

       case 8:

        $x = ($img_w - $w_w)/2;

        $y = $img_h - $w_h;

        break;

       case 9:

        $x = $img_w - $w_w;

        $y = $img_h - $w_h;

        break;

       default :

        $x = mt_rand(25, $img_w - $w_w);

        $y = mt_rand(25, $img_h - $w_h);

      }

      //寫入圖片資源

      if( $waterimg_on ){

       imagecopymerge($res_img, $w_img, $x, $y, 0, 0, $w_w, $w_h, $this->pct); 

     }else{

      $r = hexdec(substr($this->color, 1,2));

      $g = hexdec(substr($this->color, 3,2));

      $b = hexdec(substr($this->color, 5,2));

      $color = imagecolorallocate($res_img, $r, $g, $b);

      imagettftext($res_img, $this->size, 0, $x, $y, $color, $this->font, $text); 

     }

     //生成圖片類型

     switch ( $img_info[2] ){

      case 1:

       imagecreatefromgif($res_img,$out_img);

       break;

      case 2:

       //imagecreatefromjpeg($res_img,$out_img);

       imagejpeg($res_img,$out_img);

       break;

      case 3:

       imagepng($res_img,$out_img);

       break;

     }

     if(isset($res_img)) imagedestroy ($res_img);

     if(isset($w_img)) imagedestroy($w_img);

     return TRUE;

     //驗證圖片是否存在

      private function check($img){

       $type = array('.jpg','.jpeg','.png','.gif');

       $img_type = strtolower(strrchr($img, '.'));

       return extension_loaded('gd') && file_exists($img) && in_array($img_type, $type);

      } 

      //獲取縮略圖的相關(guān)比例

      //獲取到圖片的處理類型

      private function thumb_size( $img_w,$img_h,$t_w,$t_h,$t_type){

       //定義縮略圖尺寸

       $w = $t_w;

       $h = $t_h;

       //定義圖片的原始尺寸

       $cut_w = $img_w;

       $cut_h = $img_h;

       //當要目標圖像小于縮略圖的尺寸時;

       if( $img_w <= $t_w && $img_h < $t_h ){

        $w = $img_w;

        $h = $img_h;

       }else{

        if( !empty($t_type) && $t_type>0 ){

         switch ( $t_type ){

          //當寬度固定時

          case 1:

           $h = $t_w/$img_w*$img_h;

           break;

          //高度固定時

          case 2:

           $w = $t_h/$img_h*$img_w;

           break;

          //寬度固定,高度裁切

          case 3:

           $cut_h = $img_w/$t_w*$t_h;

           break;

          //高度固定,寬度裁切

          case 4:

           $cut_w = $img_h/$t_h*$t_w;

           break;

          //等比例縮放

          default :

           if( ($img_w/$t_w) > ($img_h/$t_h) ){

            $h = $t_w/$img_w*$t_h;

           }elseif( ($img_w/$t_w) < ($img_h/$t_h) ){

            $w = $t_h/$img_h*$t_w;

           }else{

            $w = $t_w;

            $h = $t_h;

           }

         }

        }

       }

       $arr[0] = $t_w;

       $arr[1] = $t_h;

       $arr[2] = $cut_w;

       $arr[3] = $cut_h;

       return $arr;

     }

    }

    以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)PHP程序設(shè)計有所幫助。

    更多信息請查看網(wǎng)絡(luò)編程

    2026上岸·考公考編培訓(xùn)報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)