主题: 哈哈 终于解决了上传加水印的问题 把源码帖出来 |
作者: 冬夜微风, 发布日期: 2011-06-11 18:07:39, 浏览数: 4703 |
修改原来的upload_json.php文件
<?php /** * KindEditor PHP * * 本PHP程序是演示程序,建议不要直接在实际项目中使用。 * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。 * * *关于加水印的地方有几个地方要设置一下啊!!!!!!! 具体在下部分 自己找一下。 * */ require_once 'JSON.php'; $php_path = dirname(__FILE__) . '/'; $php_url = dirname($_SERVER['PHP_SELF']) . '/'; //文件保存目录路径 $save_path = $php_path . '../../../attached/'; //文件保存目录URL $save_url = $php_url . '../../../attached/'; //定义允许上传的文件扩展名 $ext_arr = array('gif', 'jpg', 'jpeg', 'png', 'bmp'); //最大文件大小 $max_size = 1000000; $save_path = realpath($save_path) . '/'; //有上传文件时 if (empty($_FILES) === false) { //原文件名 $file_name = $_FILES['imgFile']['name']; //服务器上临时文件名 $tmp_name = $_FILES['imgFile']['tmp_name']; //文件大小 $file_size = $_FILES['imgFile']['size']; $image_size = getimagesize($tmp_name); //检查文件名 if (!$file_name) { alert("请选择文件。"); } //检查目录 if (@is_dir($save_path) === false) { alert("上传目录不存在。"); } //检查目录写权限 if (@is_writable($save_path) === false) { alert("上传目录没有写权限。"); } //检查是否已上传 if (@is_uploaded_file($tmp_name) === false) { alert("临时文件可能不是上传文件。"); } //检查文件大小 if ($file_size > $max_size) { alert("上传文件大小超过限制。"); } //获得文件扩展名 $temp_arr = explode(".", $file_name); $file_ext = array_pop($temp_arr); $file_ext = trim($file_ext); $file_ext = strtolower($file_ext); //检查扩展名 if (in_array($file_ext, $ext_arr) === false) { alert("上传文件扩展名是不允许的扩展名。"); } //创建文件夹 $ymd = date("Ymd"); $save_path .= $ymd . "/"; $save_url .= $ymd . "/"; if (!file_exists($save_path)) { mkdir($save_path); } //新文件名 $new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext; //移动文件 $file_path = $save_path . $new_file_name; if (move_uploaded_file($tmp_name, $file_path) === false) { alert("上传文件失败。"); } //@chmod($file_path, 0644); $file_url = $save_url . $new_file_name; $watermark=1; //是否附加水印(1为加水印,其他为不加水印); $watertype=2; //水印类型(1为文字,2为图片) $waterstring="http://www.168hs.cn/"; //水印字符串 $waterimg="http://localhost:83/images/mark.gif"; //水印图片,试了相对路不行,只好用绝对路径。 if($watermark==1) { $myfilename="../../../attached/".$ymd."/".$new_file_name; $iinfo=getimagesize($myfilename,$iinfo); $nimage=imagecreatetruecolor($image_size[0],$image_size[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($myfilename); break; case 2: $simage =imagecreatefromjpeg($myfilename); break; case 3: $simage =imagecreatefrompng($myfilename); break; case 6: $simage =imagecreatefromwbmp($myfilename); break; default: die("不支持的文件类型"); exit; } imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]); switch($watertype) { case 1: //加水印字符串 imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black); break; case 2: //加水印图片 $simage1 =imagecreatefromgif($waterimg); imagecopymerge($nimage,$simage1,$image_size[0]-150,$image_size[1]-50,0,0,150,50,60); //设置水印的位置 imagedestroy($simage1); break; } switch ($iinfo[2]) { case 1: //imagegif($nimage, $destination); imagejpeg($nimage, $myfilename); break; case 2: imagejpeg($nimage, $myfilename); break; case 3: imagepng($nimage, $myfilename); break; case 6: imagewbmp($nimage,$myfilename); //imagejpeg($nimage, $destination); break; } //覆盖原上传文件 imagedestroy($nimage); imagedestroy($simage); } header('Content-type: text/html; charset=UTF-8'); $json = new Services_JSON(); echo $json->encode(array('error' => 0, 'url' => $file_url)); exit; } function alert($msg) { header('Content-type: text/html; charset=UTF-8'); $json = new Services_JSON(); echo $json->encode(array('error' => 1, 'message' => $msg)); exit; } ?> |
作者: Roddy, 发布日期: 2011-06-11 19:32:58 |
谢谢分享,我把这个帖子移动到经验共享里。
|
回复 |
作者: jbllqz, 发布日期: 2011-08-11 20:49:16 |
回复Roddy:求救啊~,为什么我选择水印是图片的时候竟然上传时是“服务器发生错误”请大虾指教,小弟很急
|
回复 |
作者: 花卷, 发布日期: 2012-05-20 17:58:27 |
我也是用的4.1 怎么做也没有效果
|
回复 |