上传自定义水印图片到图片空间及保存数据库的方法

(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");
                }
            }

        }
    }
}

  

时间: 2024-10-10 03:23:42

上传自定义水印图片到图片空间及保存数据库的方法的相关文章

ueditor样式过滤去除和远程图片上传自定义

ueditor自定义编辑的时候,比如需要做延迟加载,这个时候需要自定义图片等,但是,ueditor会去除img上面的属性,比如data-original和把远程图片自动上传. 这个时候,首先,需要给图片自动上传加上属性,不如对于jquery.lazyload延迟加载的图片,必定带有data-original属性,只要检测出此属性,就不远程上传.其它属性自定义提那家,代码如下: 'wordimage':{ execCommand:function () { var images = domUtil

模拟上传,可自行定义上传按钮的名称和图片。

<table>    <tr>    <td>上传</td>    <td style="width:300px;">                    <div style="position: absolute; z-index: 3; cursor:hand; float:left; width:227px;">              <input id="File

升级IOS8游戏上传自定义头像功能失效的问题

为了支持arm64,之前已经折腾了很久,昨晚打包准备提交苹果审核时,测试那边的同事反馈说游戏上传自定义头像功能不可用了. 游戏上传自定义功能的简介:卡牌游戏最初是<比武招亲>中有一个充VIP之后就可使用了上传自定义功能的特权,我们的游戏就"复制"了该功能.   具体实现就是点击游戏内换自定义头像的按钮后,调用不同平台相应的方法,获取用户选择的图片数据,然后将图片裁剪再传给后台保存至特定的目录下.   测试设备是ipad air2,系统版本IOS 8.0.1,点击游戏内的按钮

WordPress 后台上传自定义网站Logo

需求: 众所周知一般网站的logo都是固定的所以我在做网站时也是使用的静态logo文件,但最近用wp给一个客户做的网站时,因为网站现在的logo可能会需要重新设计,所以客户提出了需要在后台可以自己修改网站logo,接收需求后就在网络上找如何解决,但找了一圈都没有找到想要的效果(都是如何修改wp的登录logo),还好找到两篇相关的文章,最后根据这两篇文章自己Codeing最终实现了功能代码: 1.在function中添加以下代码 <?php /**在function中添加以下代码 * WordPr

webform文件上传加水印

1.文件上传加水印 页面代码: 后台代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Drawing; public partial class _Default : System.Web.UI.Page { protected void

文件上传&amp;画水印

文件上传: //把相对路径变成绝对路径.string absolutePath = Server.MapPath(relativePath); FileUpload控件: 属性: FileName:文件名 HasFile:bool 是否选中了文件 FileBytes:要上传文件的二进制数据 方法: SaveAs(string 绝对路径):上传,另存为. 一.上传到硬盘文件夹(一)传单个文件 第一步:准备好文件及路径: //把之前在客户端的文件名给取出来 string fileName = Fil

数往知来 JQuery 图片上传_水印 &lt;二十二&gt;

一.图片上传  :enctype='multipart/form-date 首先在进行文件上传时,添加form表单中的enctype属性指定enctype='multipart/form-date', 文件数据发送给服务端,并不是把文件路径发送给服务端了,它会随机生成一个分割字符串, 把每一个表单元素分割开 <form method='post' action='' enctype='multipart/form-date'> //这里的enctype是提交请求报文的报文体的一种编码格式, 默

【2017-6-9】WebForm 图片上传加水印

前台代码 <body> <form id="form1" runat="server"> <div> <%--上传的控件--%> <asp:FileUpload ID="FileUpload1" runat="server" /> <%--上传按钮--%> <asp:Button ID="Button1" runat="

上传带水印的图片、图片验证码

一.图片加水印 前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default1.aspx.cs" Inherits="Default1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&