html5中文学习网

您的位置: 首页 > 网络编程 > PHP编程 » 正文

PHP上传图片自动加水印_PHP教程_编程技术

[ ] 已经帮助:人解决问题

用PHP给上传图片加水印的程序是通过判断文件类型建立图形,然后把其复制到原建立的图形上,填充并建立 rectangle,以备写入imagestring()或是原已经定好的图像程序当中判断水印类型:一是字符串,另是增加一个图形对象在上面。如果你对 PHP的GD库比较熟悉,看懂这篇文章一点都不难了!
 8UJHTML5中文学习网 - HTML5先行者学习网

  1. //上传文件类型列表 
  2. $uptypes=array
  3. 'image/jpg'
  4. 'image/jpeg'
  5. 'image/png'
  6. 'image/pjpeg'
  7. 'image/gif'
  8. 'image/bmp'
  9. 'image/x-png' 
  10. ); 
  11. $max_file_size=2000000; //上传文件大小限制, 单位BYTE 
  12. $destination_folder="uploadimg/"//上传文件路径 
  13. $watermark=1; //是否附加水印(1为加水印,其他为不加水印); 
  14. $watertype=1; //水印类型(1为文字,2为图片) 
  15. $waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中); 
  16. $waterstring="http://www.cxybl.com/"; //水印字符串 
  17. $waterimg="xplore.gif"//水印图片 
  18. $imgpreview=1; //是否生成预览图(1为生成,其他为不生成); 
  19. $imgpreviewsize=1/2; //缩略图比例 
  20. ?> 

实例:8UJHTML5中文学习网 - HTML5先行者学习网

  1. <html> 
  2. <head> 
  3. <title>图片上传程序 - www.cxybl.com</title> 
  4. <style type="text/css"> 
  5. <!-- 
  6. body 
  7.      font-size: 9pt; 
  8. input 
  9.      background-color: #66CCFF; 
  10.      border: 1px inset #CCCCCC; 
  11. --> 
  12. </style> 
  13. </head> 
  14. <body> 
  15. <form enctype="multipart/form-data" method="post" name="upform"> 
  16.   上传文件: 
  17.   <input name="upfile" type="file"> 
  18.   <input type="submit" value="上传"><br> 
  19.   允许上传的文件类型为:<?=implode(', ',$uptypes)?> 
  20. </form> 
  21. <?php 
  22. if ($_SERVER['REQUEST_METHOD'] == 'POST') 
  23.     if (!is_uploaded_file($_FILES["upfile"][tmp_name])) 
  24.     //是否存在文件 
  25.     { 
  26.          echo "图片不存在!"; 
  27.          exit; 
  28.     } 
  29.     $file = $_FILES["upfile"]; 
  30.     if($max_file_size < $file["size"]) 
  31.     //检查文件大小 
  32.     { 
  33.         echo "文件太大!"; 
  34.         exit; 
  35.     } 
  36.     if(!in_array($file["type"], $uptypes)) 
  37.     //检查文件类型 
  38.     { 
  39.         echo "文件类型不符!".$file["type"]; 
  40.         exit; 
  41.     } 
  42.     if(!file_exists($destination_folder)) 
  43.     { 
  44.         mkdir($destination_folder); 
  45.     } 
  46.     $filename=$file["tmp_name"]; 
  47.     $image_size = getimagesize($filename); 
  48.     $pinfo=pathinfo($file["name"]); 
  49.     $ftype=$pinfo['extension']; 
  50.     $destination = $destination_folder.time().".".$ftype; 
  51.     if (file_exists($destination) && $overwrite != true) 
  52.     { 
  53.         echo "同名文件已经存在了"; 
  54.         exit; 
  55.     } 
  56.     if(!move_uploaded_file ($filename, $destination)) 
  57.     { 
  58.         echo "移动文件出错"; 
  59.         exit; 
  60.     } 
  61.     $pinfo=pathinfo($destination); 
  62.     $fname=$pinfo[basename]; 
  63.     echo " <font color=red>已经成功上传</font><br>文件名:  
  64. <font color=blue>".$destination_folder.$fname."</font><br>"; 
  65.     echo " 宽度:".$image_size[0]; 
  66.     echo " 长度:".$image_size[1]; 
  67.     echo "<br> 大小:".$file["size"]." bytes"; 
  68.     if($watermark==1) 
  69.     { 
  70.         $iinfo=getimagesize($destination,$iinfo); 
  71.         $nimage=imagecreatetruecolor($image_size[0],$image_size[1]); 
  72.         $white=imagecolorallocate($nimage,255,255,255); 
  73.         $black=imagecolorallocate($nimage,0,0,0); 
  74.         $red=imagecolorallocate($nimage,255,0,0); 
  75.         imagefill($nimage,0,0,$white); 
  76.         switch ($iinfo[2]) 
  77.         { 
  78.             case 1: 
  79.             $simage =imagecreatefromgif($destination); 
  80.             break; 
  81.             case 2: 
  82.             $simage =imagecreatefromjpeg($destination); 
  83.             break; 
  84.             case 3: 
  85.             $simage =imagecreatefrompng($destination); 
  86.             break; 
  87.             case 6: 
  88.             $simage =imagecreatefromwbmp($destination); 
  89.             break; 
  90.             default: 
  91.             die("不支持的文件类型"); 
  92.             exit; 
  93.         } 
  94.         imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]); 
  95.         imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white); 
  96.         switch($watertype) 
  97.         { 
  98.             case 1:   //加水印字符串 
  99.             imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black); 
  100.             break; 
  101.             case 2:   //加水印图片 
  102.             $simage1 =imagecreatefromgif("xplore.gif"); 
  103.             imagecopy($nimage,$simage1,0,0,0,0,85,15); 
  104.             imagedestroy($simage1); 
  105.             break; 
  106.         } 
  107.         switch ($iinfo[2]) 
  108.         { 
  109.             case 1: 
  110.             //imagegif($nimage, $destination); 
  111.             imagejpeg($nimage, $destination); 
  112.             break; 
  113.             case 2: 
  114.             imagejpeg($nimage, $destination); 
  115.             break; 
  116.             case 3: 
  117.             imagepng($nimage, $destination); 
  118.             break; 
  119.             case 6: 
  120.             imagewbmp($nimage, $destination); 
  121.             //imagejpeg($nimage, $destination); 
  122.             break; 
  123.         } 
  124.         //覆盖原上传文件 
  125.         imagedestroy($nimage); 
  126.         imagedestroy($simage); 
  127.     } 
  128.     if($imgpreview==1) 
  129.     { 
  130.     echo "<br>图片预览:<br>"; 
  131.     echo "<ccid_file values="/" width=".($image_size[0]*$imgpreviewsize)." 
  132. height=".($image_size[1]*$imgpreviewsize);" 
  133.     echo " alt=/"图片预览:/r文件名:".$destination."/r上传时间:/" />"; 
  134.     } 
  135. ?> 
  136. </body> 
  137. </html> 
8UJHTML5中文学习网 - HTML5先行者学习网
8UJHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助