Jump to content
jadergfarinon

Salvar imagem no servidor utilizando JavaScript

Recommended Posts

Bom dia pessoal, não sei quase nada de JavaScript e não consegui encontrar nada relacionado com o que eu preciso então desculpa se eu sair com alguma pergunta idiota aqui, bom... eu tenho um Mini Paint rodando aqui na empresa, o script não foi feito por mim, já estava rodando quando eu entrei e provavelmente foi pego na internet, bom, é uma tela em branco na qual é possível desenhar, seja com o mouse ou com o dedo na tela do celular, tem também dois botões, um para limpar a tela e outro para salvar, quando clicamos em salvar ele exibe um prompt para digitar um nome e salva o desenho em png localmente na máquina como um download, porem estou precisando modificar para que esse arquivo seja salvo em uma pasta no próprio servidor em que o script está rodando, esse servidor fica aqui na minha rede então poderia ser direto pelo script no webserver através de um endereço estilo localhost ou por um caminho estilo \\servidor\pasta_imagens que enviaria para uma pasta compartilhada no servidor aonde o site está rodando mas não faço idéia de como modificar o java script para isso, seguem os códigos, se alguém puder me ajudar agradeço muito

 

 

HTML (index.html)

<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>Teste</title>
  <link rel="stylesheet" href="css/style.css">
</head>
<body>
<main>
<div class="left-block">
  <div class="colors">
  </div>
  <div class="brushes">
  </div>
  <div class="buttons">
    <button id="clear" type="button">Limpar</button>
    <button id="save" type="button">Salvar</button>
  </div>
</div>
<div class="right-block">
  <canvas id="paint-canvas" width="640" height="400"></canvas>
</div>
</main>
<script  src="js/index.js"></script>
</body>
</html>

 

css(css/style.css)


* {
  box-sizing: border-box;
}

main {
  width: 800px;
  border: 1px solid #e0e0e0;
  margin: 0 auto;
  display: flex;
  flex-grow: 1;
}

.left-block {
  width: 160px;
  border-right: 1px solid #e0e0e0;
}

.colors {
  background-color: #ece8e8;
  text-align: center;
  padding-bottom: 5px;
  padding-top: 10px;
}

.colors button {
  display: inline-block;
  border: 1px solid #00000026;
  border-radius: 0;
  outline: none;
  cursor: pointer;
  width: 20px;
  height: 20px;
  margin-bottom: 5px
}

.colors button:nth-of-type(1) {
  background-color: #0000ff;
}

.colors button:nth-of-type(2) {
  background-color: #009fff;
}

.colors button:nth-of-type(3) {
  background-color: #0fffff;
}

.colors button:nth-of-type(4) {
  background-color: #bfffff;
}

.colors button:nth-of-type(5) {
  background-color: #000000;
}

.colors button:nth-of-type(6) {
  background-color: #333333;
}

.colors button:nth-of-type(7) {
  background-color: #666666;
}

.colors button:nth-of-type(8) {
  background-color: #999999;
}

.colors button:nth-of-type(9) {
  background-color: #ffcc66;
}

.colors button:nth-of-type(10) {
  background-color: #ffcc00;
}

.colors button:nth-of-type(11) {
  background-color: #ffff00;
}

.colors button:nth-of-type(12) {
  background-color: #ffff99;
}

.colors button:nth-of-type(13) {
  background-color: #003300;
}

.colors button:nth-of-type(14) {
  background-color: #555000;
}

.colors button:nth-of-type(15) {
  background-color: #00ff00;
}

.colors button:nth-of-type(16) {
  background-color: #99ff99;
}

.colors button:nth-of-type(17) {
  background-color: #f00000;
}

.colors button:nth-of-type(18) {
  background-color: #ff6600;
}

.colors button:nth-of-type(19) {
  background-color: #ff9933;
}

.colors button:nth-of-type(20) {
  background-color: #f5deb3;
}

.colors button:nth-of-type(21) {
  background-color: #330000;
}

.colors button:nth-of-type(22) {
  background-color: #663300;
}

.colors button:nth-of-type(23) {
  background-color: #cc6600;
}

.colors button:nth-of-type(24) {
  background-color: #deb887;
}

.colors button:nth-of-type(25) {
  background-color: #aa0fff;
}

.colors button:nth-of-type(26) {
  background-color: #cc66cc;
}

.colors button:nth-of-type(27) {
  background-color: #ff66ff;
}

.colors button:nth-of-type(28) {
  background-color: #ff99ff;
}

.colors button:nth-of-type(29) {
  background-color: #e8c4e8;
}

.colors button:nth-of-type(30) {
  background-color: #ffffff;
}

.brushes {
  //background-color: purple;
  padding-top: 5px
}

.brushes button {
  display: block;
  width: 100%;
  border: 0;
  border-radius: 0;
  background-color: #ece8e8;
  margin-bottom: 5px;
  padding: 5px;
  height: 30px;
  outline: none;
  position: relative;
  cursor: pointer;
}

.brushes button:after {
  height: 1px;
  display: block;
  background: #808080;
  content: '';
}

.brushes button:nth-of-type(1):after {
  height: 1px;
}

.brushes button:nth-of-type(2):after {
  height: 2px;
}

.brushes button:nth-of-type(3):after {
  height: 3px;
}

.brushes button:nth-of-type(4):after {
  height: 4px;
}

.brushes button:nth-of-type(5):after {
  height: 5px;
}

.buttons {
  height: 80px;
  padding-top: 10px;
}

.buttons button {
  display: block;
  width: 100%;
  border: 0;
  border-radius: 0;
  background-color: #ece8e8;
  margin-bottom: 5px;
  padding: 5px;
  height: 30px;
  outline: none;
  position: relative;
  cursor: pointer;
  font-size: 16px;
}

.right-block {
  width: 640px
  height:100vh;
}

#paint-canvas {
  cursor:crosshair;
}

 

JavaScript (js/index.js)

window.onload = function () {

  // Definitions
  var canvas = document.getElementById("paint-canvas");
  var context = canvas.getContext("2d");
  var boundings = canvas.getBoundingClientRect();

  // Specifications
  var mouseX = 0;
  var mouseY = 0;
  context.strokeStyle = 'black'; // initial brush color
  context.lineWidth = 1; // initial brush width
  var isDrawing = false;


  // Handle Colors
  var colors = document.getElementsByClassName('colors')[0];

  colors.addEventListener('click', function(event) {
    context.strokeStyle = event.target.value || 'black';
  });

  // Handle Brushes
  var brushes = document.getElementsByClassName('brushes')[0];

  brushes.addEventListener('click', function(event) {
    context.lineWidth = event.target.value || 1;
  });

  // Mouse Down Event
  canvas.addEventListener('mousedown', function(event) {
    setMouseCoordinates(event);
    isDrawing = true;

    // Start Drawing
    context.beginPath();
    context.moveTo(mouseX, mouseY);
  });

  // Mouse Move Event
  canvas.addEventListener('mousemove', function(event) {
    setMouseCoordinates(event);

    if(isDrawing){
      context.lineTo(mouseX, mouseY);
      context.stroke();
    }
  });

  // Mouse Up Event
  canvas.addEventListener('mouseup', function(event) {
    setMouseCoordinates(event);
    isDrawing = false;
  });

  // Handle Mouse Coordinates
  function setMouseCoordinates(event) {
    mouseX = event.clientX - boundings.left;
    mouseY = event.clientY - boundings.top;
  }

  // Handle Clear Button
  var clearButton = document.getElementById('clear');

  clearButton.addEventListener('click', function() {
    context.clearRect(0, 0, canvas.width, canvas.height);
  });

  // Handle Save Button
  var saveButton = document.getElementById('save');

  saveButton.addEventListener('click', function() {
    var imageName = prompt('Digite o Número da movimentação.');
    var canvasDataURL = canvas.toDataURL();
    var a = document.createElement('a');
    a.href = canvasDataURL;
    a.download = imageName || 'drawing';
    a.click();
  });
};

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By odenilson marques
      Ola pessoal,  estou precisando de uma força! segue a situação.
       
      tenho 3 formulário em um projeto, sendo eles:
      form_cad_empresa
      form_cad_atividade
      form_cad_processo
       
      no form_cad_atividade e form_cad_processo tenho uma combobox que lista todas empresas cadastradas no form_cad_empresa, porém no form_cad_atividade e no form_cad_processo também tenho um link que redireciona o usuário para o form_cad_empresa para ele cadastrar a empresa caso não encontre a empresa na combobox do form_cad_atividade e form_cad_processo, porém gostaria que quando terminasse o cadastro do form_cad_empresa este teria que ser redirecionado para o form_cad_atividade ou form_cad_processo, ou seja ele retornaria para formulario que chamou o form_cad_empresa.
       
      Alguém pode me da um norte?
       
    • By eduardaarosaa
      Estou estudando Js, fiz esse exemplo abaixo porém o onlick não está chamando a função, nada acontece quando quando clico no botão.
          
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta http-equiv="X-UA-Compatible" content="ie=edge">
          <title>Somando números</title>
      </head>
      <body>
          <h1>Soamando valores</h1>
          <input type="number" name="txt0" id="txt1">
          +
          <input type="number" name="txt2" id="txt3">
          <input type="button" value="somar" id="botao" onclick="somar()">
          <div id="res">
          </div>
          <script>
          
              res.addEventListener('mouseeenter', entrar);
              function somar(){
                  var n1 = window.document.querySelector("input#txt1");
                  var n2 = window.document.querySelector("input#txt3");
                  var n1 = Number(txt1.value);
                  var n2 = Number(txt3.value);
                  var soma = (n1+n2);
                  var res = window.document.getElementById("res");
          
                  res.innerHTML(`A soma é de ${soma}`);
                 
              }
              function entrar(){
                  area.style.background="red";
              }
          </script>
      </body>
      </html>
           
    • By emersongo
      Olá, no meu projeto tenho uma animação ao scroll, quando me aproximo do elemento ele "surge" de algum lado, porém por alguma razão somente alguns elementos do site estão funcionando 100%, outros, no inspecionar mostra que a classe ANIMATE já é adicionada no elemento assim que a página é carregada, e a mesma não é removida mesmo quando eu me aproximo e afasto do elemento.

      Fazendo alguns testes vi que quando o elemento animado está fora do pai SECTION funciona normalmente, quando está dentro não (com exceção do primeiro elemento animado do site).

      Fiz o upload do código para o JSFiddle, https://jsfiddle.net/kuxf7mep/ ,como pode ver o elemento ARTICLE na linha 101 está animado normalmente, porém os elementos HEADER da linha 147 e o MAIN da linha 152 estão com a animação mas não funcionam.

      OBS: Podem fazer o teste colocando um elemento animado dentro e fora da section.
    • By Mafernardo98
      Tenho uma tabela chamada bilhete, preciso que o usuário, ao clicar no botão que abre um modal, realize uma consulta dentro dessa tabela, essa consulta precisa pegar um id aleatório e exibir o bilhete entro do modal, algo que simule uma caixinha de bilhetes motivacionais, que pode ser retirado um bilhete por vez... Mas eu não consigo exibir os dados da consulta dentro do modal... por favor me ajudem, sou iniciante nisso
       
      Esse é meu index.php
      <?php
                          include_once "db.php";
                          $result_bilhete = "SELECT * FROM bilhete WHERE idbilhete = 4";
                          $resultado_bilhete = mysqli_query($conexao, $result_bilhete);
                          $row_bilhete = mysqli_fetch_assoc($resultado_bilhete);
                          ?>
                         <button type="button" class="btn btn-primary view_data" id="<?php echo $row_bilhete['idbilhete']; ?>"data-toggle="modal" data-target="#visulUsuarioModal">Bilhetes</button>
                          <!-- Modal -->
                          <div class="modal fade" id="visulUsuarioModal" tabindex="-1" role="dialog" arial-labelledby="Rotulo do modal">
                              <div class="modal-dialog" role="document">
                                  <div class="modal-content">
                                      <div class="modal-header">
                                          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                                          <h4 class="modal-title" id="titulo-modal">Bilhete Motivacional</h4>
                                      </div>
                                      <div class="modal-body">
                                          <span id="p-bilhete"></span>
                                      </div>
                                      <div class="modal-footer">
                                          <button type="button" class="btn btn-primary">Salvar Bilhete</button>
                                      </div>
                                  </div>
                              </div>
                          </div>
              <script>    
                      $(document).ready(function(){
                      $(document).on('click','.view_data', function(){
                          var idbilhete = $(this).attr("idbilhete");
                          //alert(idbilhete);
                          //Verificar se há valor na variável "idbilhete".
                          if(idbilhete !== ''){
                              var dados = {
                                  idbilhete: idbilhete
                              };
                              $.post('vizualizarBilhete.php', dados, function(retorna){
                                  //Carregar o conteúdo para o bilhete
                                  $("#p-bilhete").html(retorna);
                                  $('#visulUsuarioModal').modal('show'); 
                              });
                          }
                      });
                  });
              </script>
      Esse é meu vizualizarBilhete.php
       
      <?php
      if(isset($_POST["idbilhete"])){
          include_once "db.php";
          
          $resultado = '';
          
          $idBilhetes = rand(4, 10);
          
          $result_bilhete = "SELECT * FROM bilhete WHERE idbilhete = 4";
          $resultado_bilhete = mysqli_query($conexao, $result_bilhete);
          $row_bilhete = mysqli_fetch_assoc($resultado_bilhete);
          
          while($row_bilhete = mysqli_fetch_assoc($resultado_bilhete)){
          
          $resultado .= '<dl class="row">';
          
          $resultado .= '<dt class="col-sm-3">Bilhete</dt>';
          $resultado .= '<dd class="col-sm-9">'.$row_bilhete['bilhete'].'</dd>';
              
          $resultado .= '</dl>';
          
          echo $resultado;
          }
      }
       
    • By joaodias117
      Gostaria de saber como realizar a seguinte ação:
      Quero que, ao selecionar um campo de uma lista de categorias, outra lista seja gerada com as subcategorias. Segue exemplo do site Mercado Livre, durante o processo de anúncio de um produto:

      Como eu poderia criar o código javascript e html?
      Esses são os códigos html que uso no documento view:
      <div class="form-group"> <label class="col-sm-3 control-label" for="input-category"><span data-toggle="tooltip" title="<?php echo $help_category; ?>"><?php echo "Categorias"; ?></span></label> <!-- $entry_category --> <div class="col-sm-9"> <select name="product_category" id="product-category" size="10" class="form-control"> <?php foreach($product_categories as $product_category){ ?> <?php if($product_category['parent_id'] == 300 && $product_category['level'] == 0){ ?> <option value="<?php echo $product_category['category_id']; ?>"><?php echo $product_category['name']; ?></option> <?php } ?> <?php } ?> </select> <select name="product_category" id="product-subcategory" size="10" class="form-control"> <?php foreach($product_categories as $product_category){ ?> <?php if($product_category['parent_id'] == 59 && $product_category['level'] == 1){ ?> <option value="<?php echo $product_category['category_id']; ?>"><?php echo $product_category['name']; ?></option> <?php } ?> <?php } ?> </select> </div> </div> Output:

      Obs 1: o código html é um teste para a categoria Acessórios (category_id = 59) gerando as subcategorias dessa categoria (subcategorias com parent_id = 59), mas gostaria de saber como gerar uma lista para cada categoria selecionada.
      Obs 2: no output é gerada a tabela das subcategorias mesmo sem clicar no campo Acessórios, diferentemente do Mercado Livre.
      Alguém poderia me ajudar com isto? Preciso resolver o quanto antes.
      Agradeço desde já a atenção e a ajuda!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.