·您当前的位置:首页 > 技术教程 > PHP教程 >

[php]Kindeditor解决PHP版上传加水印的问题源代码

时间:2014-09-22 11:07酷播
[php]Kindeditor解决PHP版上传加水印的问题源代码

[php]Kindeditor解决PHP版上传加水印的问题源代码

  1. <?php 
  2. /** 
  3. * KindEditor PHP 
  4. * 
  5.  *  
  6. 本PHP程序是演示程序,建议不要直接在实际项目中使用。 
  7. * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。 
  8.  
  9. * 
  10. *关于加水印的地方有几个地方要设置一下啊!!!!!!! 具体在下部分 自己找一下。 
  11. * 
  12. */ 
  13.  
  14. require_once 'JSON.php'
  15. $php_path = dirname(__FILE__) . '/'
  16. $php_url = dirname($_SERVER['PHP_SELF']) . '/'
  17.  
  18. //文件保存目录路径 
  19. $save_path = $php_path . '../../../attached/'
  20. //文件保存目录 
  21. URL$save_url = $php_url . '../../../attached/'
  22. //定义允许上传的文件扩展名 
  23. $ext_arr = array('gif''jpg''jpeg''png''bmp'); 
  24. //最大文件大小 
  25. $max_size = 1000000; 
  26.  
  27. $save_path = realpath($save_path) . '/'
  28.  
  29. //有上传文件时 
  30. if (emptyempty($_FILES) === false) { 
  31. //原文件名 
  32. $file_name = $_FILES['imgFile']['name']; 
  33. //服务器上临时文件名 
  34. $tmp_name = $_FILES['imgFile']['tmp_name']; 
  35. //文件大小 
  36. $file_size = $_FILES['imgFile']['size']; 
  37.  
  38. $image_size = getimagesize($tmp_name); 
  39.  
  40. //检查文件名 
  41. if (!$file_name) {alert("请选择文件。"); 
  42. //检查目录 
  43. if (@is_dir($save_path) === false) {alert("上传目录不存在。"); 
  44. //检查目录写权限 
  45. if (@is_writable($save_path) === false) {alert("上传目录没有写权限。"); 
  46. //检查是否已上传 
  47. if (@is_uploaded_file($tmp_name) === false) {alert("临时文件可能不是上传文件。"); 
  48. //检查文件大小 
  49. if ($file_size > $max_size) {alert("上传文件大小超过限制。"); 
  50. //获得文件扩展名 
  51. $temp_arr = explode("."$file_name); 
  52. $file_ext = array_pop($temp_arr); 
  53. $file_ext = trim($file_ext); 
  54. $file_ext = strtolower($file_ext); 
  55. //检查扩展名 
  56. if (in_array($file_ext$ext_arr) === false) {alert("上传文件扩展名是不允许的扩展名。"); 
  57. //创建文件夹 
  58. $ymd = date("Ymd");$save_path .= $ymd . "/"
  59. $save_url .= $ymd . "/"
  60. if (!file_exists($save_path)) {mkdir($save_path); 
  61. //新文件名 
  62. $new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext
  63. //移动文件 
  64. $file_path = $save_path . $new_file_name
  65. if (move_uploaded_file($tmp_name$file_path) === false) {alert("上传文件失败。"); 
  66.  
  67. //@chmod($file_path, 0644); 
  68. $file_url = $save_url . $new_file_name;  
  69.  
  70. $watermark=1; //是否附加水印(1为加水印,其他为不加水印); 
  71. $watertype=2; //水印类型(1为文字,2为图片) 
  72. $waterstring="http://www.168hs.cn/"; //水印字符串 
  73. $waterimg="http://localhost:83/images/mark.gif"; //水印图片,试了相对路不行,只好用绝对路径。 
  74.  
  75. if($watermark==1) 
  76. $myfilename="../../../attached/".$ymd."/".$new_file_name;  
  77. $iinfo=getimagesize($myfilename,$iinfo);  
  78. $nimage=imagecreatetruecolor($image_size[0],$image_size[1]); 
  79. $white=imagecolorallocate($nimage,255,255,255); 
  80. $black=imagecolorallocate($nimage,0,0,0); 
  81. $red=imagecolorallocate($nimage,255,0,0); 
  82. imagefill($nimage,0,0,$white); 
  83. switch ($iinfo[2]) 
  84. case 1: 
  85. $simage =imagecreatefromgif($myfilename); 
  86. break
  87. case 2: 
  88. $simage =imagecreatefromjpeg($myfilename); 
  89. break
  90. case 3: 
  91. $simage =imagecreatefrompng($myfilename); 
  92. break
  93. case 6: 
  94. $simage =imagecreatefromwbmp($myfilename); 
  95. break
  96. default:die("不支持的文件类型"); 
  97. exit
  98.  
  99. imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]); 
  100.  
  101. switch($watertype
  102. case 1: //加水印字符串 
  103. imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black); 
  104. break
  105. case 2: //加水印图片 
  106. $simage1 =imagecreatefromgif($waterimg); 
  107. imagecopymerge($nimage,$simage1,$image_size[0]-150,$image_size[1]-50,0,0,150,50,60); //设置水印的位置  
  108. imagedestroy($simage1); 
  109. break
  110.  
  111. switch ($iinfo[2]) 
  112. case 1: 
  113. //imagegif($nimage, $destination); 
  114. imagejpeg($nimage$myfilename); 
  115. break
  116. case 2: 
  117. imagejpeg($nimage$myfilename); 
  118. break
  119. case 3: 
  120. imagepng($nimage$myfilename); 
  121. break
  122. case 6: 
  123. imagewbmp($nimage,$myfilename); 
  124. //imagejpeg($nimage, $destination); 
  125. break
  126.  
  127. //覆盖原上传文件 
  128. imagedestroy($nimage); 
  129. imagedestroy($simage); 
  130.  
  131. header('Content-type: text/html; charset=UTF-8'); 
  132. $json = new Services_JSON(); 
  133. echo $json->encode(array('error' => 0, 'url' => $file_url)); 
  134. exit
  135.  
  136. function alert($msg) { 
  137. header('Content-type: text/html; charset=UTF-8'); 
  138. $json = new Services_JSON(); 
  139. echo $json->encode(array('error' => 1, 'message' => $msg)); 
  140. exit
  141. ?> 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器