Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $msg = 'READY!'; // Mensaje de estado
- if($_POST) // Verifica que existan datos POST
- {
- define('UPLOAD_DIR', '/tmp/'); // Fija el destino para almacenar la imagen en el servidor
- $img = $_POST['code']; // Obtiene el codigo de la imagen
- $img = str_replace('data:image/png;base64,', '', $img); // Limpia datos adicionales del codigo
- $img = str_replace(' ', '+', $img);
- $data = base64_decode($img); // Decodifica el contenido de la imagen
- $file = UPLOAD_DIR . uniqid() . '.png'; // Fija un path completo para la imagen, con un identificador unico
- $success = file_put_contents($file, $data); // Crea el archivo que contiene la imagen
- $msg = $success ? "Saved as $file" : "Error!"; // Retorna el path de la imagen o error en caso contrario
- }
- ?>
- <!DOCTYPE html>
- <html lang="es">
- <head>
- <title>CANVAS TEST</title>
- <meta charset="utf-8" />
- </head>
- <body style="background: #CCC;">
- <header style="text-align: center;">
- <h1>CANVAS TEST</h1>
- <h3><?php echo $msg; ?></h3>
- </header>
- <section style="position: relative; top: 0%; left: 0%; height: 100%; width: 100%;">
- <article style="position: absolute; top: 0%; left: 0%; width: 50%; text-align: center;">
- <canvas id="capture" width="400" height="400" style="background: #fff; border:4px solid #000; border-radius: 10px; cursor: crosshair; display: block; margin: auto;"></canvas>
- <input id="clear" type="button" value="LIMPIAR" />
- </article>
- <article style="position: absolute; top: 0%; left: 50%; width: 50%; text-align: center;">
- <form action="#" method="post">
- <textarea id="code" name="code" style="width: 400px; height: 400px; display: block; margin: auto;" required></textarea>
- <input id="go" type="button" value="OBTENER CODIGO" />
- <input name="send" type="submit" value="ENVIAR" />
- </form>
- </article>
- </section>
- </body>
- <script type="text/javascript">
- var canvas = document.getElementById('capture'); // Obtener el objeto canvas
- var ctx = canvas.getContext("2d"); // Obtener un "contexto" de trabajo en 2D
- var rect = canvas.getBoundingClientRect(); // Obtener el espacio rectangular que define el canvas
- var ox = -1; // Coordenada original en X
- var oy = -1; // Coordenada original en Y
- var code = ''; // Variable para almcaenar el codigo base64 de la imagen
- var pick = false; // Variable badera que define el modo "trazo"
- document.getElementById('go').onclick = getCode; // Evento click para obtener el codigo de la imagen
- document.getElementById('clear').onclick = clear; // Evento click para limpiar el canvas y el area de codigo
- canvas.onmousedown = active; // Eventos del mouse sobre el canvas "presionar"
- canvas.onmouseup = anule; // "soltar"
- canvas.onmouseover = anule; // "salir"
- canvas.onmousemove = move; // "mover"
- function clear() // Funcion que limpia y restablece los valores iniciales
- {
- anule(); // Anula el modo trazo
- ctx.clearRect(0, 0, canvas.width, canvas.height); // Limpia el canvas
- document.getElementById('code').value = ''; // Limpia el area de codigo
- }
- function active() // Funcion que define el inicio de un trazo
- {
- pick = true; // Activa el modo trazo
- ox = -1; // Fija coordenadas originales
- oy = -1;
- }
- function anule() // Funcion que define el fin de un trazo
- {
- pick = false; // Desactiva el modo trazo
- ox = -1; // Fija coordenadas originales
- oy = -1;
- }
- function move(evt) // Funcion que "dibuja" un trazo sobre el canvas
- {
- if(pick) // Verifica que el modo trazo este activo
- {
- var x = evt.clientX - rect.left; // Calcula las coordenadas del puntero respecto al origen del canvas
- var y = evt.clientY - rect.top;
- ctx.lineWidth = 3; // Define el ancho de linea conque se va a dibujar
- ctx.strokeStyle = 'green'; // Define el color del trazo
- ctx.beginPath(); // Inicia una ruta de trazo
- if(ox == -1 && oy == -1) // Verifica que las coordenadas originales no esten inicializadas
- {
- ox = x; // Inicializa las coordenadas originales
- oy = y;
- }
- else // Si hay coordenadas originales validas
- {
- ctx.moveTo(ox,oy); // Mueve el origen del trazo a las coordenadas de origen
- ctx.lineTo(x,y); // Define una linea del origen a la posicion del puntero
- ctx.stroke(); // Dibuja el trazo
- ox = x; // Almacena las coordenadas del puntero como el proximo origen
- oy = y;
- }
- ctx.closePath(); // Cierra la ruta del trazo
- }
- }
- function getCode() // Funcion que obtiene el codigo de la imagen trazada
- {
- code = canvas.toDataURL(); // Obtiene el codigo base64 de la imagen
- document.getElementById('code').value = code; // Almacena el codigo en un area de texto
- }
- </script>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment