程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 圖片上傳加水印(自動增加水印)

php 圖片上傳加水印(自動增加水印)

編輯:關於PHP編程

php 圖片上傳加水印(自動增加水印)/*這是一款完美的php文件上傳代碼,圖片上傳成功後並自動給圖片增加上水印,這樣很好的快速的提高的了要手工一張張增加水印效果。

php教程 圖片上傳加水印(自動增加水印)
/*
這是一款完美的php文件上傳代碼,圖片上傳成功後並自動給圖片增加上水印,這樣很好的快速的提高的了要手工一張張增加水印效果。
*/

 function upload($uploadfile,$watermark=1,$watertype=1,$content){
  foreach($uploadfile['name'] as $key=>$name) {  //多文件上傳函數
   uploadall($uploadfile,$key,$watermark,$watertype,$content);
  }
 }
 function uploadall($uploadfile,$i,$watermark,$watertype,$content) {
  $watermark=$watermark;         //是否附加水印(1為加水印,其他為不加水印);
  $watertype=$watertype;         //水印類型(1為文字,2為圖片)
  $watercontent=$content;         //水印的內容
  if(empty($uploadfile['name'][$i])) {
   die("未選擇文件上傳");
  }
  if($uploadfile['error'][$i] == 2) {   //驗證html判斷結果
   die("上傳的文件太大了");
  }
  $allow_filemaxsize = 2048000;    // 2m
  $filesize = $uploadfile['size'][$i];
  if($filesize > $allow_filemaxsize) {
   die("上傳的文件太大了");
  }
  $allow_filetypes = array("jpeg", "gif", "png","jpg","pjpeg");//允許上傳的文件統一資源類型 mimetype
  $allow = false;        //默認都不允許
  $mimetype = $uploadfile['type'][$i];  //上傳文件的mime文件類型
  foreach($allow_filetypes as $t) {
   if(strpos($mimetype, $t) !== false) {
    $allow = true;      //找到了符合上傳條件的文件類型
    break;
   }
  }
  if($allow == false) {
   die("上傳的文件類型不被允許");
  }
  $result = is_uploaded_file($uploadfile['tmp_name'][$i]);   //判斷是否為上傳動作產生的
  if(!$result) {
   die("上傳的文件有誤");
  }
  $uploaddir = "img/";       //上傳文件保存目錄
  if(!file_exists($uploaddir)) mkdir($uploaddir, 0777, true);//若上傳保存目錄不存在,則遞歸創建
  /**重命名文件**/
  $filetype = explode(".", $uploadfile['name'][$i]);
  $filetype = array_pop($filetype);
  $uploadfilename = time().".".$filetype;
  $_session['filename'] = $uploadfilename;
  //end
  $result = move_uploaded_file($uploadfile['tmp_name'][$i], $uploaddir.$uploadfilename);
  if($result) {
   echo  "文件上傳成功";
  }else{
   switch($uploadfile['error'][$i]) {
    case 1:return "上傳的文件超出了php.ini中設定的最大值";break;
    case 2:return "上傳的文件超出了html中設定的最大值";break;
    case 3:return "文件只有部分被上傳";break; 
    case 4;return "沒有文件被上傳";break; 
    default:die("文件上傳失敗");  
   }
  }
  if($watermark==1) {
   $iinfo=getimagesize($uploaddir.$uploadfilename);  //獲取圖片的相關信息,得到數組
   $nimage=imagecreatetruecolor($iinfo[0],$iinfo[1]);
   $white=imagecolorallocate($nimage,255,255,255); //設置背景顏色為白色
   $black=imagecolorallocate($nimage,0,0,0);  //設置背景顏色為黑色
   $red=imagecolorallocate($nimage,255,0,0);  //設置背景顏色為紅色
   imagefill($nimage,0,0,$white);     //背景填充為白色
   switch ($iinfo[2]) {
    case 1:
    $simage =imagecreatefromgif($uploaddir.$uploadfilename);
    break;
    case 2:
    $simage =imagecreatefromjpeg($uploaddir.$uploadfilename);
    break;
    case 3:
    $simage =imagecreatefrompng($uploaddir.$uploadfilename);
    break;
    case 6:
    $simage =imagecreatefromwbmp($uploaddir.$uploadfilename);
    break;
    default:
    die("不支持的文件類型");
    exit;
   }
   imagecopy($nimage,$simage,0,0,0,0,$iinfo['0'],$iinfo['1']);
   switch($watertype) {
    case 1:             //加水印字符串
    imagestring($nimage,5,$iinfo['0']/2-50,$iinfo['1']-30,$watercontent,$black);
    break;
    case 2:            //加水印圖片
    $simage1 =imagecreatefromgif($watercontent);
    $size = getimagesize($watercontent);
    imagecopy($nimage,$simage1,$iinfo['0']/2+50,$iinfo['1']-100,0,0,$size[0],$size[1]);
    imagedestroy($simage1);
    break;
   }

   switch ($iinfo[2]) {
    case 1:
    imagejpeg($nimage, $uploaddir.$uploadfilename); //將圖像$nimage以$destination文件名創建一個jpeg的格式文件
    break;
    case 2:
    imagejpeg($nimage, $uploaddir.$uploadfilename);
    break;
    case 3:
    imagepng($nimage, $uploaddir.$uploadfilename);
    break;
    case 6:
    imagewbmp($nimage, $uploaddir.$uploadfilename);
    break;
   }
   imagedestroy($nimage);    //覆蓋原上傳文件
   imagedestroy($simage);
  }
}
if(@$_get['act'] == "insert") {    //未作參數校驗
     //該函數的四個參數分別是:上傳控件的name值;是否加水印(1為加,其他數字為不佳);
     //水印的類型(1為字符串,2為圖片);水印的內容,字符串時寫數據,圖片時寫圖片的地址;
 $picture = upload($_files['picture'],1,2,"img/watermark.gif");//上傳文件,並返回上傳後的文件路徑名

}

?>

上傳代碼

<form method="post" action="" enctype="multipart/form-data">
 <table border="1" cellpadding="5" cellspacing="0">
  <tr>
   <td>產品圖片:</td>
   <td><input type="hidden" name="max_file_size" value="1024000">
    <input type="file" name="picture[]">
   </td>
  </tr>
  <tr>
   <td colspan="2" align="center"><input type="submit" value="提交"></td>
  </tr>
 </table>
</form>


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved