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

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

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

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

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 = '樂(lè)趣網(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;
} 
 //驗(yàn)證圖片是否存在
  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.效果圖

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

相關(guān)文章

  • PHP調(diào)用JAVA的WebService簡(jiǎn)單實(shí)例

    PHP調(diào)用JAVA的WebService簡(jiǎn)單實(shí)例

    本篇文章主要是對(duì)PHP調(diào)用JAVA的WebService簡(jiǎn)單實(shí)例進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-03-03
  • PHP版微信小店接口開發(fā)實(shí)例

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

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

    php中如何同時(shí)使用session和cookie來(lái)保存用戶登錄信息

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

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

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

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

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

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

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

    php跨域檢測(cè)類允許部分域名訪問(wèn)的示例詳解

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

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

    PHP本身的函數(shù)嵌套是沒(méi)有限制的,如果說(shuō)有限制,也是內(nèi)存的限制。這是因?yàn)镻HP的函數(shù)嵌套是以棧的形式實(shí)現(xiàn)的。對(duì)于每個(gè)函數(shù)都會(huì)分配一段內(nèi)存來(lái)存儲(chǔ)函數(shù)局部的內(nèi)容。
    2011-06-06
  • php 讀取文件亂碼問(wèn)題

    php 讀取文件亂碼問(wèn)題

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

    PHP的全局錯(cuò)誤處理詳解

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

最新評(píng)論

丁青县| 泰和县| 错那县| 南和县| 三穗县| 青冈县| 南乐县| 苏尼特右旗| 青州市| 潞西市| 岳池县| 张家港市| 宁晋县| 玉环县| 长宁县| 乐安县| 乐山市| 饶阳县| 松溪县| 宁安市| 金湖县| 通渭县| 石河子市| 高雄市| 博湖县| 恩施市| 龙江县| 永福县| 镇康县| 崇明县| 台南县| 宁陕县| 保德县| 甘谷县| 永康市| 比如县| 张掖市| 改则县| 唐海县| 疏勒县| 胶南市|