程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 為你講解PHP給圖片加水印的具體方法

為你講解PHP給圖片加水印的具體方法

編輯:關於PHP編程

我們在做網站的時候,都會遇到需要將網站上傳的圖片附加上水印,如果一個一個的手工加水印肯定非常麻煩,也是不實際的操作。那麼,我們今天就向大家接受PHP給圖片加水印的具體方法,簡化操作步驟。

  • 給圖片加水印的具體代碼如下:

    1. <?php   
    2. /******************************************************************************   
    3.  
    4. 參數說明:   
    5. $max_file_size  : 上傳文件大小限制, 單位BYTE   
    6. $destination_folder : 上傳文件路徑   
    7. $watermark   : 是否附加水印(1為加水印,其他為不加水印);   
    8.  
    9. 使用說明:   
    10. 1. 將PHP.INI文件裡面的"extension=php_gd2.dll"一行前面的;號去掉,因為我們要用到GD庫;   
    11. 2. 將extension_dir =改為你的php_gd2.dll所在目錄;   
    12. ******************************************************************************/   
    13.  
    14. //上傳文件類型列表   
    15. $uptypes=array(   
    16.     'image/jpg',   
    17.     'image/jpeg',   
    18.     'image/png',   
    19.     'image/pjpeg',   
    20.     'image/gif',   
    21.     'image/bmp',   
    22.     'image/x-png'   
    23. );   
    24.  
    25. $max_file_size=2000000;     //上傳文件大小限制, 單位BYTE   
    26. $destination_folder="uploadimg/"; //上傳文件路徑   
    27. $watermark=1;      //是否附加水印(1為加水印,其他為不加水印);   
    28. $watertype=1;      //水印類型(1為文字,2為圖片)   
    29. $waterposition=1;     //水印位置(1為左下角,2為右下角,3為左上角,4為右上角,5為居中);   
    30. $waterstring="http://www.xplore.cn/";  //水印字符串   
    31. $waterimg="xplore.gif";    //水印圖片   
    32. $imgpreview=1;      //是否生成預覽圖(1為生成,其他為不生成);   
    33. $imgpreviewsize=1/2;    //縮略圖比例   
    34. ?>   
    35. <html>   
    36. <head>   
    37. <title>ZwelL圖片上傳程序</title>   
    38. <style type="text/css">   
    39. <!--   
    40. body   
    41. {   
    42.      font-size: 9pt;   
    43. }   
    44. input   
    45. {   
    46.      background-color: #66CCFF;   
    47.      border: 1px inset #CCCCCC;   
    48. }   
    49. -->   
    50. </style>   
    51. </head>   
    52.  
    53. <body>   
    54. <form enctype="multipart/form-data" method="post" name="upform">   
    55.   上傳文件:   
    56.   <input name="upfile" type="file">   
    57.   <input type="submit" value="上傳"><br>   
    58.   允許上傳的文件類型為:<?=implode(', ',$uptypes)?>   
    59. </form>   
    60.  
    61. <?php   
    62. if ($_SERVER['REQUEST_METHOD'] == 'POST')   
    63. {   
    64.     if (!is_uploaded_file($_FILES["upfile"][tmp_name]))   
    65.     //是否存在文件   
    66.     {   
    67.          echo "圖片不存在!";   
    68.          exit;   
    69.     }   
    70.  
    71.     $file = $_FILES["upfile"];   
    72.     if($max_file_size < $file["size"])   
    73.     //檢查文件大小   
    74.     {   
    75.         echo "文件太大!";   
    76.         exit;   
    77.     }   
    78.  
    79.     if(!in_array($file["type"], $uptypes))   
    80.     //檢查文件類型   
    81.     {   
    82.         echo "文件類型不符!".$file["type"];   
    83.         exit;   
    84.     }   
    85.  
    86.     if(!file_exists($destination_folder))   
    87.     {   
    88.         mkdir($destination_folder);   
    89.     }   
    90.  
    91.     $filename=$file["tmp_name"];   
    92.     $image_size = getimagesize($filename);   
    93.     $pinfo=pathinfo($file["name"]);   
    94.     $ftype=$pinfo['extension'];   
    95.     $destination = $destination_folder.time().".".$ftype;   
    96.     if (file_exists($destination) && $overwrite != true)   
    97.     {   
    98.         echo "同名文件已經存在了";   
    99.         exit;   
    100.     }   
    101.  
    102.     if(!move_uploaded_file ($filename, $destination))   
    103.     {   
    104.         echo "移動文件出錯";   
    105.         exit;   
    106.     }   
    107.  
    108.     $pinfo=pathinfo($destination);   
    109.     $fname=$pinfo[basename];   
    110.     echo " <font color=red>已經成功上傳</font><br>文件名:  <font color=blue>".$destination_folder.$fname."</font><br>";   
    111.     echo " 寬度:".$image_size[0];   
    112.     echo " 長度:".$image_size[1];   
    113.     echo "<br> 大小:".$file["size"]." bytes";   
    114.  
    115.     if($watermark==1)   
    116.     {   
    117.         $iinfo=getimagesize($destination,$iinfo);   
    118.         $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);   
    119.         $white=imagecolorallocate($nimage,255,255,255);   
    120.         $black=imagecolorallocate($nimage,0,0,0);   
    121.         $red=imagecolorallocate($nimage,255,0,0);   
    122.         imagefill($nimage,0,0,$white);   
    123.         switch ($iinfo[2])   
    124.         {   
    125.             case 1:   
    126.             $simage =imagecreatefromgif($destination);   
    127.             break;   
    128.             case 2:   
    129.             $simage =imagecreatefromjpeg($destination);   
    130.             break;   
    131.             case 3:   
    132.             $simage =imagecreatefrompng($destination);   
    133.             break;   
    134.             case 6:   
    135.             $simage =imagecreatefromwbmp($destination);   
    136.             break;   
    137.             default:   
    138.             die("不支持的文件類型";   
    139.             exit;   
    140.         }   
    141.  
    142.         imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);   
    143.         imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);   
    144.  
    145.         switch($watertype)   
    146.         {   
    147.             case 1:   //加水印字符串   
    148.             imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);   
    149.             break;   
    150.             case 2:   //加水印圖片   
    151.             $simage1 =imagecreatefromgif("xplore.gif";   
    152.             imagecopy($nimage,$simage1,0,0,0,0,85,15);   
    153.             imagedestroy($simage1);   
    154.             break;   
    155.         }   
    156.  
    157.         switch ($iinfo[2])   
    158.         {   
    159.             case 1:   
    160.             //imagegif($nimage, $destination);   
    161.             imagejpeg($nimage, $destination);   
    162.             break;   
    163.             case 2:   
    164.             imagejpeg($nimage, $destination);   
    165.             break;   
    166.             case 3:   
    167.             imagepng($nimage, $destination);   
    168.             break;   
    169.             case 6:   
    170.             imagewbmp($nimage, $destination);   
    171.             //imagejpeg($nimage, $destination);   
    172.             break;   
    173.         }   
    174.  
    175.         //覆蓋原上傳文件   
    176.         imagedestroy($nimage);   
    177.         imagedestroy($simage);   
    178.     }   
    179.  
    180.     if($imgpreview==1)   
    181.     {   
    182.     echo "<br>圖片預覽:<br>";   
    183.     echo "<img src="".$destination."" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);   
    184.     echo " alt="圖片預覽:r文件名:".$destination."r上傳時間:">";   
    185.     }   
    186. }   
    187. ?>   
    188. </body>   
    189. </html>  

    以上就是我們為大家奉上的PHP給圖片加水印的具體代碼,希望對又需要的朋友有所幫助。


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