最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php實現(xiàn)圖片上傳時添加文字和圖片水印技巧

 更新時間:2020年04月18日 10:41:17   作者:D_aneil  
這篇文章主要為大家詳細介紹了php實現(xiàn)圖片上傳時添加文字和圖片水印技巧,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實現(xiàn)的功能特別適用于一些商城和圖片站中,分享了圖片在上傳時添加文字和圖片水印的技巧,供大家參考,具體內容如下

1. water.class.php

<?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';
  
 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:
   imagejpeg($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);
  } 
}

2. test1.php

<?php
 
/* 
 * 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.
 */
//header('Content-Type:text/html;charset=utf-8');
include 'water.class.php';
$image = new Water();
$image->watermark('12.jpg',5);
//$image->watermark('12.jpg',1);

3.效果圖

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

相關文章

  • PHP調用JAVA的WebService簡單實例

    PHP調用JAVA的WebService簡單實例

    本篇文章主要是對PHP調用JAVA的WebService簡單實例進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-03-03
  • PHP版微信小店接口開發(fā)實例

    PHP版微信小店接口開發(fā)實例

    這篇文章主要介紹了PHP版微信小店接口開發(fā)方法,結合實例形式分析了php實現(xiàn)微信小店接口調用的相關操作技巧,需要的朋友可以參考下
    2016-11-11
  • php中如何同時使用session和cookie來保存用戶登錄信息

    php中如何同時使用session和cookie來保存用戶登錄信息

    本篇文章是對在php中同時使用session和cookie來保存用戶登錄信息的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友參考下
    2013-07-07
  • UCenter中的一個可逆加密函數(shù)authcode函數(shù)代碼

    UCenter中的一個可逆加密函數(shù)authcode函數(shù)代碼

    瀏覽UCenter源代碼的時候發(fā)現(xiàn)這個函數(shù),剛好有需要,就記錄一下。
    2010-07-07
  • PHP抽象類與接口的區(qū)別詳解

    PHP抽象類與接口的區(qū)別詳解

    今天小編就為大家分享一篇關于PHP抽象類與接口的區(qū)別詳解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • PHP服務端環(huán)境搭建的圖文教程(分享)

    PHP服務端環(huán)境搭建的圖文教程(分享)

    下面小編就為大家分享一篇PHP服務端環(huán)境搭建的圖文教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • php跨域檢測類允許部分域名訪問的示例詳解

    php跨域檢測類允許部分域名訪問的示例詳解

    PHP跨域檢測類是一種封裝了跨域檢測邏輯的PHP類,它可以用于在PHP應用程序中檢測和處理跨域請求,以確保安全和正常的跨域通信,本文給出了示例給大家介紹php如何允許部分域名訪問,需要的朋友可以參考下
    2023-12-12
  • PHP中的函數(shù)嵌套層數(shù)限制分析

    PHP中的函數(shù)嵌套層數(shù)限制分析

    PHP本身的函數(shù)嵌套是沒有限制的,如果說有限制,也是內存的限制。這是因為PHP的函數(shù)嵌套是以棧的形式實現(xiàn)的。對于每個函數(shù)都會分配一段內存來存儲函數(shù)局部的內容。
    2011-06-06
  • php 讀取文件亂碼問題

    php 讀取文件亂碼問題

    php 5的流讀取函數(shù)好像默認編碼是UTF-8,以前在php 4里直接file_get_contents()讀取gb2312編碼的正常,到了5就亂碼了。
    2010-02-02
  • PHP的全局錯誤處理詳解

    PHP的全局錯誤處理詳解

    php自有try{throw{}}catch{}異常/錯誤捕獲系統(tǒng),難以在生產(chǎn)環(huán)境中運用;生產(chǎn)環(huán)境中,我們一般要求,一旦出現(xiàn)異常/錯誤,php立刻結束腳本,向訪客瀏覽器輸出出錯提示,并通過自定義函數(shù)向管理員發(fā)送消息
    2016-04-04

最新評論

比如县| 重庆市| 宝兴县| 开鲁县| 金门县| 河间市| 包头市| 台安县| 洛宁县| 江阴市| 青岛市| 繁峙县| 榆中县| 织金县| 辛集市| 灵丘县| 新营市| 荔浦县| 筠连县| 鄂托克旗| 丹凤县| 兴义市| 鹰潭市| 河北区| 泉州市| 称多县| 乌拉特前旗| 军事| 荥经县| 常宁市| 上思县| 林芝县| 阿克苏市| 阜康市| 隆回县| 武隆县| 安丘市| 新邵县| 临朐县| 广南县| 丰台区|