php上傳圖片加浮水印(圖片浮水印,文字浮水印)

來源:互聯網
上載者:User
 代碼如下 複製代碼

/*
 * created on 2010-6-21
 *
 * the class for control image
 *
 * made by s71ence
 *
 * @$img_path 圖片路徑
 * @$is_auto_reduce 圖片是否自動按照大小等級壓縮 1是
 * @$is_appoint 是否手動進行壓縮或放大 1是
 * @$multiple 手動指定壓縮/放大比例
 * @$is_water_str 是否加浮水印文字 1是
 * @$water_str 浮水印文字
 * @$is_watermark 是否加浮水印圖片 1是
 * @$logo_path 浮水印圖片路徑
 * @$is_display 是否顯示圖片 1是
 * @$is_create 是否產生壓縮後的圖片 1是
 *
 * 注:
 * 1.產生新圖時不可顯示圖片,即$isdisplay和$iscreate不可同時置為1
 * 2.當圖片寬或高小於1000時,需手動設定壓縮比例進行壓縮
 * 3.不建議啟用浮水印,若要啟用,建議原圖片大小最好在1000以內
 * 4.浮水印文字中不可含有中文
 * 5.新產生的圖片在原目錄檔案中,支援n個層級
 */

 class image_control
 {
  private $img_path;
  private $is_auto_reduce;
  private $is_appoint;
  private $multiple;
  private $is_water_str;
  private $water_str;
  private $is_watermark;
  private $logo_path;
  private $is_display;
  private $is_create;

  function __construct($img_path,$is_auto_reduce,$is_appoint,$multiple,$is_water_str,$water_str,$is_watermark,$logo_path,$is_display,$is_create)
  {
   $this->img_path=$img_path;
   $this->is_auto_reduce=$is_auto_reduce;
   $this->is_appoint=$is_appoint;
   $this->multiple=$multiple;
   $this->is_water_str=$is_water_str;
   $this->water_str=$water_str;
   $this->is_watermark=$is_watermark;
   $this->logo_path=$logo_path;
   $this->is_display=$is_display;
   $this->is_create=$is_create;
  }

  function img_control()
  {
  //擷取原圖
  $img_info=getimagesize($this->img_path);

  switch($img_info[2])
  {
   case 1:
    $img_get=@imagecreatefromgif($this->img_path);
   break;

   case 2:
    $img_get=@imagecreatefromjpeg($this->img_path);
   break;

   case 3:
    $img_get=@imagecreatefrompng($this->img_path);
   break;
  }

  //文字浮水印
  if($this->is_water_str==1)
  {
   //imagettftext(原圖,文字大小,文字旋轉,浮水印起始座標x,浮水印起始座標y,$te,'simhei.ttf',$str);
   $te=imagecolorallocate($img_get,255,255,255);
   $str=iconv("gbk","utf-8",$this->water_str);//浮水印文字
   imagettftext($img_get,16,0,$img_info[0]-200,$img_info[1]-20,$te,'msyh.ttf',$str);
  }

  //圖片浮水印
  if($this->is_watermark==1)
  {
   //浮水印圖片處理
   $logo_info=getimagesize($this->logo_path);

   switch($logo_info[2])
   {
    case 1:
     $logo=@imagecreatefromgif($this->logo_path);
    break;

    case 2:
     $logo=@imagecreatefromjpeg($this->logo_path);
    break;

    case 3:
     $logo=@imagecreatefrompng($this->logo_path);
    break;
   }

   //浮水印logo圖片
   //函數說明:imagecopy(原圖,浮水印圖片,浮水印座標x,浮水印座標y,浮水印圖片開始座標x,浮水印圖片開始座標y,'浮水印圖片寬','浮水印圖片高');
   imagecopy($img_get,$logo,0,0,0,0,$logo_info[0],$logo_info[1]);
  }

  //自動圖片壓縮 按圖片大小分級自動壓縮
  //imagecopyresized(畫布,原圖,畫布起始x座標,畫布起始y座標,原圖起始x座標,原圖起始x座標,新圖片寬,新圖片高,原圖片寬,原圖片高);
  if($this->is_auto_reduce==1)
  {
   if($img_info[0]>=3000 || $img_info[1]>=3000)
   {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.03,$img_info[1]*0.03);//產生畫布
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.03,$img_info[1]*0.03,$img_info[0],$img_info[1]);
   }
   else if($img_info[0]>=2500 || $img_info[1]>=2500)
   {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.04,$img_info[1]*0.04);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.04,$img_info[1]*0.04,$img_info[0],$img_info[1]);
   }
   else if($img_info[0]>=2000 || $img_info[1]>=2000)
   {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.05,$img_info[1]*0.05);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.05,$img_info[1]*0.05,$img_info[0],$img_info[1]);
   }
   else if($img_info[0]>=1500 || $img_info[1]>=1500)
   {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.08,$img_info[1]*0.08);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.08,$img_info[1]*0.08,$img_info[0],$img_info[1]);
   }
   else if($img_info[0]>=1000 || $img_info[1]>=1000)
   {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.1,$img_info[1]*0.1);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.1,$img_info[1]*0.1,$img_info[0],$img_info[1]);
   }
   else if($img_info[0]>=500 || $img_info[1]>=500)
   {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.2,$img_info[1]*0.2);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.2,$img_info[1]*0.2,$img_info[0],$img_info[1]);
   }
   else if($img_info[0]>=300 || $img_info[1]>=300)
   {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.3,$img_info[1]*0.3);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.3,$img_info[1]*0.3,$img_info[0],$img_info[1]);
   }
   else
   {
    $new_image_get=imagecreatetruecolor($img_info[0]*1,$img_info[1]*1);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*1,$img_info[1]*1,$img_info[0],$img_info[1]);
   }
  }

  //手動圖片壓縮
  //imagecopyresized(畫布,原圖,畫布起始x座標,畫布起始y座標,原圖起始x座標,原圖起始x座標,新圖片寬,新圖片高,原圖片寬,原圖片高);
  if($this->is_appoint)
  {
   $new_image_get=imagecreatetruecolor($img_info[0]*$this->multiple,$img_info[1]*$this->multiple);//產生畫布
   imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*$this->multiple,$img_info[1]*$this->multiple,$img_info[0],$img_info[1]);
  }

  //映像輸出
  if($this->is_display==1)
  {
   header("content-type: image/jpeg");
   return imagejpeg($new_image_get);
  }

  //新映像產生
  if($this->is_create==1)
  {
   $new_name=explode("/",$this->img_path);
   $new_name_string="";

   for($i=0;$i<count($new_name)-1;$i++)
   {
    $new_name_string.=$new_name[$i]."/";
   }

   $new_img_path=$new_name_string."new".$new_name[$i];

   if(imagejpeg($new_image_get,$new_img_path) && imagejpeg($img_get,$this->img_path))
   {
    setcookie("img_new_path", $new_img_path);
       //return "圖片產生成功!<br/>新圖:".$new_img_path."<br/>原圖:".$this->img_path;
   }
   else
   {
    return "圖片產生失敗,請檢查配置是否正確!";
   }
  }
  }

  function __desctruct()
  {
   //clear
  }
 }

//調用方法

 代碼如下 複製代碼

/* $img_path="../users/user_photo/t2.jpg"; //被操作的圖片路徑
 $is_auto_reduce=1;//圖片是否自動按照大小等級壓縮 1是
 $is_appoint=0;//是否手動進行壓縮 1是
 $multiple=0.5;//手動指定壓縮比例
 $is_water_str=0;//是否加浮水印文字
 $water_str="www.111cn.net";//浮水印文字
 $is_watermark=0;//是否加浮水印圖片 1是
 $logo_path="../image/logo_about.gif";//浮水印圖片路徑
 $is_display=0;//是否顯示圖片 1是
 $is_create=1;//是否產生壓縮後的圖片 1是
 $img=new image_control($img_path,$is_auto_reduce,$is_appoint,$multiple,$is_water_str,$water_str,$is_watermark,$logo_path,$is_display,$is_create);
 echo $img->img_control();*/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.