为你讲解PHP给图片加水印的具体方法

开发 后端
如何批量的,简便的将我们上传的图片附加上水印呢?今天我们就告诉大家一种方便的办法,就是使用PHP给图片加水印。

我们在做网站的时候,都会遇到需要将网站上传的图片附加上水印,如果一个一个的手工加水印肯定非常麻烦,也是不实际的操作。那么,我们今天就向大家接受PHP给图片加水印的具体方法,简化操作步骤。

#t#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给图片加水印的具体代码,希望对又需要的朋友有所帮助。

责任编辑:曹凯 来源: CSDN
相关推荐

2009-12-07 15:41:51

PHP图片加水印

2024-08-01 08:37:46

vue图片性能

2009-05-06 14:03:13

SQL Server日志log

2009-12-25 16:52:57

网络接入控制

2009-11-23 15:10:28

PHP获取当前url

2009-12-03 18:23:23

2009-12-01 09:52:40

PHP过滤字符串

2009-11-30 11:24:49

PHP将EXCEL导入

2009-11-25 17:14:45

PHP安装为Apach

2009-12-03 17:57:35

PHP重定向代码

2009-11-24 20:09:35

PHP函数header

2010-07-21 14:33:01

删除telnet

2009-12-01 15:12:34

路由器配置VLAN

2009-11-24 17:25:00

PHP二维数组排序

2009-12-08 16:48:41

无线路由器

2010-08-23 14:05:11

2010-08-17 13:12:06

无线路由器加密

2022-05-04 18:26:25

PDF水印Python

2024-01-09 16:02:44

Python开源

2009-11-24 18:18:21

PHP函数array_
点赞
收藏

51CTO技术栈公众号