上传自定义水印图片到图片空间及保存数据库的方法
2015-10-28 12:06 流浪的诗人 阅读(593) 评论(0) 编辑 收藏 举报(1)、添加我的水印,按钮展示:
<div class="form-actions"> <button data-toggle="modal" class="sui-btn btn-primary btn-large" onclick="addmywatermark();" >添加我的水印</button> </div> /** * 添加我的水印 **/ function addmywatermark(){ $("#bjtp").modal('show'); }
(2)、按钮点击的上传图片
/* * id="bjtp",modal页面展示 */ <div id="bjtp" tabindex="-1" role="dialog" data-hasfoot="true" data-backdrop="static" class="sui-modal hide fade" data-width="500px" > <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" data-dismiss="modal" aria-hidden="true" class="sui-close">×</button> <h4 id="myModalLabel" class="modal-title">添加我的水印模板</h4> </div> <div class="modal-body" > <form class="sui-form" id="picfile" name="picfile" > <label class="control-label">上传图片 :</label> <div class="controls"> <span> <input type="hidden" id="user_nick" name="user_nick"/> <input type="file" id="file" name="file" style="display:none;" onchange="previewImageLogo(this);"/> <button type="button" class="sui-btn btn-primary" onclick="file.click()" value="">浏览本地图片</button> <div id="pic_logo"><img src="" width="100mm" id="logopic" height="100mm"/></div> </div><br/> </form> </div> <div class="modal-footer"> <button data-ok="modal" data-toggle="modal" data-keyboard="false" class="sui-btn btn-primary btn-lg" onclick="getpicspaceimages();">确定</button> <button type="button" data-dismiss="modal" class="sui-btn btn-default btn-large">关闭</button> </div> </div> </div> </div>
(3)、浏览本地图片,确定上传按钮
function getpicspaceimages(){
$("#user_nick").val(user_nick);
var form = document.getElementById("picfile");/*form表单用于上传文件,ajax请求发送formData*/
var formData = new FormData(form);
console.log("formData:"+formData);
$.ajax({
url: APP_WEB_INDEX_ROOT+'/itemdb2/uploadimgs',
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
dataType:'json',
beforeSend: function(data){ },
success: function(data){
console.log(data);
if(data=='fail'){
layer.msg('上传图片失败!', 1, 3);
}else{
layer.msg('上传图片成功!', 2, 1);
showownmarkimgs();/*提取数据库数据,运用dot模板展现所有的自定义水印模板*/
}
},
error: function(data){
layer.msg('上传图片失败!', 1, 3);
}
});
}
(4)、上传水印图片后台代码
function uploadimgsAction(){ log_message("info",'进来了!'); $nick = $_POST['user_nick']; if(empty($nick)){ return 'fail'; } $picture_category_id = $_POST['category_id']; $this->log("resp:".json_encode($nick)); $scp = $_FILES['file']; $logo_name = $scp["tmp_name"]; $this->log("scp:".$scp.",logo_name:".$logo_name); if ($_FILES["file"]["error"] > 0){ $this->log_error('-','自定义水印上传图片空间','uploadimgsAction',"上传失败:文件出错"); echo json_encode("fail"); }else{ $pinfo = pathinfo($_FILES["file"]["name"]); $photo_type = $pinfo['extension']; $pic_name = md5(microtime(true)).".".$photo_type; $pic_path = "/data/tmp/".$pic_name; /*定义临时文件夹用于存放水印图片*/ $this->log("pic_path:".$pic_path); if(!move_uploaded_file ($_FILES["file"]["tmp_name"], $pic_path)){ /* *move_uploaded_file() 函数将上传的文件移动到新位置。 *若成功,则返回 true,否则返回 false。 * */ $this->log_error('自定义水印上传图片空间','uploadimgsAction',"上传失败:不是合法的上传文件"); echo json_encode("fail"); }else{ //获取用户session $token_result = $this ->Authorization( $nick, 'item' ); if( $token_result && $token_result ->code == 200 ){ $top_session = $token_result ->msg; $this->log($top_session); }else{ $this->log("没有获得用户的topsso授权信息"); $this->log_error('自定义水印上传图片空间','uploadimgsAction',"上传失败:不是合法的上传文件"); echo json_encode("fail"); return 'fail'; } //PictureCategoryGetRequest,淘宝适用于php的api,用于得到图片空间文件夹,存放水印 $c = new TopClient; $c->appkey = $this -> app_itemkey; $c->secretKey = $this -> secret_itemKey; $cname = '勿删爱用商品自定义水印'; $req = new PictureCategoryGetRequest; $req->setPictureCategoryName($cname); $resp = $c->execute($req, $top_session); if(isset($resp ->picture_categories ->picture_category)){ $pictureCategoryId = $resp ->picture_categories ->picture_category[0] ->picture_category_id; } $this->log('pid :'.$pictureCategoryId); //没有获取到保存水印的类目id,setPictureCategoryName需要创建 if(empty($pictureCategoryId)){ $req = new PictureCategoryAddRequest; $req->setPictureCategoryName($cname); // $req->setParentId("0"); $resp = $c->execute($req, $top_session); $this->log('pid_add:'.json_encode($resp)); } $req = new PictureUploadRequest; $this->log($picture_category_id .' # 149311130066704700'); $req->setPictureCategoryId(intval($pictureCategoryId)); $req->setImg('@' . $pic_path); $req->setImageInputTitle($pic_name); $req->setClientType("client:computer"); $resp = $c->execute($req, $top_session); unlink($pic_path); //图片上传成功后,删除临时文件夹中的图片 //从返回值中获取数据 $this->log(json_encode($resp)); $picture_path = $resp->picture->picture_path; $createtime = $resp->picture->created; $picture_category_id = $resp->picture->picture_category_id; $pixel = $resp->picture->pixel; $sizes = $resp->picture->sizes; $picture_id = $resp->picture->picture_id; //水印图上传到图片空间之后,同时保存到数据库 if (!empty($nick)){ $this -> log("nick22222222:".$nick); if (strpos($nick, ':') != false) { $nick = substr($nick, 0, strpos($nick, ':')); } $usersuggest = array( 'sellernick' => $nick, 'pic_url' => $picture_path, 'createtime'=> $createtime, 'picture_category_id' => $picture_category_id, 'pixel'=> $pixel, 'sizes'=> $sizes, 'num_iid'=>$picture_id ); $dao = new CommonDao(); $id = $dao -> saveRow('zzbitem.watermark_userown', $usersuggest, ''); if($id > 0){ //图片保存成功之后,需要取出图片展现在前台 $this->log("picture_path222:".$picture_path); $waterImg = $picture_path; $handle = fopen($waterImg, 'rb');//打开水印图片 $watermark = new Imagick(); $watermark->readImageFile($handle); $size_w = $watermark->getImagePage();//获取水印图片大小 $height_w = $size_w['height'];//水印图片高 $width_w = $size_w['width'];//水印图片宽 $this->log("打开水印,高度{$height_w},宽度{$width_w}"); if($width_w/3 > $height_w){ $width_w = 150;//默认单位为px $height_w = 30; }else if($height_w/3 > $width_w){ $width_w = 30; $height_w = 150; }else{ $width_w = 150; $height_w = 100; } $picvar = array($waterImg,$width_w,$height_w,$picture_id); $this->log("picarr:".json_encode($picvar)); echo json_encode($picvar); }else{ echo json_encode("fail"); } } } } }
你的关注和支持是对我最大的动力~
书山有路群[一个非常活跃的读书分享群,每周都有新书分享]:452450927
微博:http://weibo.com/u/2241641312
出处:http://www.cnblogs.com/wdlhao/
github:https://github.com/wdlhao
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面