简体   繁体   English

如何将画布编辑的图像数据获取到 HTML 输入字段?

[英]How to get canvas edited image data to HTML input field?

<canvas id="c" name="c"></canvas>
<input style="display:none;" type="file" name="nextImage" id="nextImage"/>

Above code is canvas where edited image is placed, below is input field where i want the canvas image value.上面的代码是放置编辑图像的画布,下面是我想要画布图像值的输入字段。

jQuery('document').ready(function(){

  jQuery('#svconvac').click(function(e){
      e.preventDefault();
      console.log("Click");
      var canvas = document.getElementById('c');
      var dataURL = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
    //jQuery("#nextImage").val(dataURL);

    console.log(dataURL);
    //return false;
    jQuery.ajax({
      type: "POST",
      url: "editMap.php",
      data: { 
        imgBase64: dataURL
      },
      success: function(data) {
        data['dataURL'] = document.getElementById("nextImage").value;
        console.log('saved'); 
      } 
    });


  });

});

So far what i tried using this ajax function but no chances to be successful, am i calling wrong data in ajax?到目前为止,我尝试使用这个 ajax 函数但没有成功的机会,我在 ajax 中调用了错误的数据吗? where it says:它说:

editedMap = $data['dataURL']; 

My Function for saving to database Please also look at this:我的用于保存到数据库的功能请同时查看:

public function mapUpdate($data, $file, $id)
        {
            $floor_name =$this->fm->validation($data['floor_name']);

            $floor_name =mysqli_real_escape_string($this->db->link, $data['floor_name']);

            $permited  = array('jpg', 'jpeg', 'png', 'gif');
            $file_name = $file['nextImage']['name'];
            $file_size = $file['nextImage']['size'];
            $file_temp = $file['nextImage']['tmp_name'];

            $div = explode('.', $file_name);
            $file_ext = strtolower(end($div));
            $unique_image = substr(md5(time()), 0, 10).'.'.$file_ext;
            $uploaded_image = "uploads/maps/".$unique_image;

            if($floor_name == '')
            {
                $msg = "<span class='error'> Fields must not be empty !! </span>";
                return $msg;
            }
            else{
                if (!empty($file_name)) 
                {

                    if ($file_size >1048567) 
                    {
                        echo "<span class='error'>Image Size should be less then 1MB! </span>";
                    } 

                    elseif (in_array($file_ext, $permited) === false) 
                    {
                        echo "<span class='error'>You can upload only:-".implode(', ', $permited)."</span>";
                    }


                    else
                    {
                        $delImageQuery = "SELECT * FROM tbl_map WHERE mapId='$id'";
                        $getData = $this->db->select($delImageQuery);

                        if ($getData) 
                        {
                            while ($delImg =$getData->fetch_assoc()) 
                            {
                                $delLink =  $delImg['mapImg'];
                                unlink($delLink);
                            }
                        }


                        move_uploaded_file($file_temp, $uploaded_image);

                        $query= "UPDATE tbl_map SET floorName = '$floor_name', mapImg = '$uploaded_image' WHERE mapId ='$id' ";

                        $update_row =$this->db->update($query);
                        if($update_row)
                        {
                            $msg ="<span class='success'> Map Update successfully. </span>";
                            return $msg;
                        }

                        else 
                        {
                            echo "<span class='error'>Map Not Update !</span>";
                        }
                    }

                } 

                else
                {                               
                    $query= "UPDATE tbl_map SET floorName = '$floor_name' WHERE mapId ='$id' ";

                    $update_row =$this->db->update($query);

                    if($update_row)
                    {
                        $msg ="<span class='success'> Map Update successfully. </span>";
                        return $msg;
                    }

                    else 
                    {
                        echo "<span class='error'>Map Not Update !</span>";
                    }
                }
            }
   }// Update function ends here

Hoping for some help.希望得到一些帮助。

Input type file does not accept base64 data as value, you can use input type hidden like below.输入类型文件不接受 base64 数据作为值,您可以使用隐藏的输入类型,如下所示。

HTML HTML

<canvas id="c" name="c"></canvas>
<input type="hidden" name="nextImage" id="nextImage"> 

JS JS

jQuery('document').ready(function(){

  jQuery('#svconvac').click(function(e){
      e.preventDefault();
      console.log("Click");
      var canvas = document.getElementById('c');
      var dataURL = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
    //jQuery("#nextImage").val(dataURL);

    console.log(dataURL);
    //return false;
    jQuery.ajax({
      type: "POST",
      url: "editMap.php",
      data: { // [1]
        imgBase64: dataURL
      },
      success: function(data) { // [2]
        // data at [1] and [2] are not same, data [2] is variable that hold values of response from "editMap.php" API, you may also change this name to any name like response.
        data['dataURL'] = document.getElementById("nextImage").value;
        console.log('saved'); 
      } 
    });


  });

});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM