Underc0de

Programación Web => Front-end => Mensaje iniciado por: graphixx en Enero 27, 2016, 02:00:14 PM

Título: Como crear un meme con html5 y javascript
Publicado por: graphixx en Enero 27, 2016, 02:00:14 PM
(http://anexsoft.com/uploads/f50583143ba81796fe11b5516e7aeb49.jpg)

De manera sencilla vamos a crear los famosos MEME lo cual podría ser "imágenes para que se le agrega un texto para hacer una broma gráfica o joda".

Explicación breve:
Antes de entrar al código y me digan, pero podemos agregar esto y lo otro .. esto es un EJEMPLO señores, el cual la idea es que ustedes lo puedan mejorar.

En que consiste:
Se sube una imagen, se agrega un texto y genera la imagen para luego descargarla dando click derecho.

Ahora si:
Toda nuestra lógica se resume al siguiente script

Código (javascript) [Seleccionar]

var img, canvas, context;
       
        function SubirImagen()
        {
            canvas = document.getElementById("canvas");
            context = canvas.getContext("2d");
           
            canvas.width = 700;
            canvas.height = 500;
           
            // Cargamos el objeto que nos permite subir imagenes
            var imagen = document.getElementById("imagen");
            if(imagen.files.length == 0)
            {
                alert('Debe ingresar una imagen');
                return;
            }

            // Creamos la imagen
            img = new Image();
            img.src = URL.createObjectURL(imagen.files[0]);
           
            img.onload = function() {
                // Dibujamos la imagen
                context.drawImage(img, 0, 0, canvas.width, canvas.height);
            };
           
            // Mostramos el canvas
            document.getElementById("meme").style.display = 'block';
        }
       
        function AgregarTexto()
        {
            // Cargamos la caja de texto
            var texto = document.getElementById("texto");
           
            img.src = URL.createObjectURL(imagen.files[0]);
            img.onload = function() {
                // Dibujamos la imagen
                context.drawImage(img, 0, 0, canvas.width, canvas.height);
               
                // Agregamos el texto
                context.lineWidth  = 5;
                context.font = '30pt sans-serif';
                context.strokeStyle = 'black';
                context.fillStyle = 'white';
                context.textAlign = 'center';

                texto = texto.value.toUpperCase();
               
                var x = canvas.width/2;
                var y = canvas.height - 40;

                context.strokeText(texto, x, y);
                context.fillText(texto, x, y);
            };
        }



En la función AgregarTexto() he agregado comentarios para que se entienda mejor:

Código (javascript) [Seleccionar]

context.lineWidth  = 5; // Grosor del borde
context.font = '30pt sans-serif'; // tamaño de letra y tipo de fuente
context.strokeStyle = 'black'; // color de la sombra
context.fillStyle = 'white'; // color del texto
context.textAlign = 'center'; // alineación del texto

texto = texto.value.toUpperCase(); // lo pasamos a mayascula

var x = canvas.width/2; // para decirle que el texto comience justo al medio
var y = canvas.height - 40; // le decimos que el texto comience al final menos ¿40px?

context.strokeText(texto, x, y); // creamos la sombra
context.fillText(texto, x, y); // creamos el texto


Nuestro código html es muy simple

Código (html5) [Seleccionar]

<div id="subida">
    <p id="elija">SELECCIONE UNA IMAGEN A SUBIR</p>
    <div class="form-control">
        <input id="imagen" type="file" />
    </div>
    <div class="form-control">
        <button id="subir" onclick="SubirImagen();">Renderizar</button>
    </div>
</div>
<div id="meme" class="none">
    <div class="form-control">
        <input id="texto" type="text" onkeyup="AgregarTexto();" placeholder="Texto que desea agregar" maxlength="20" autocomplete="off" />
    </div>
    <canvas id="canvas"></canvas>
    <div class="form-control">
        <p><b>Click derecho</b> y <b>guardar imagen como</b> para descargar</p>
    </div>
</div>


DESCARGA CÓDIGO FUENTE DEL EJEMPLO (https://mega.nz/#!EYFk2Jga!P3XdB83Y4-0PpFvDo5vQDBhUvGc-2Xk8mJvtJlR3S5E)

Fuente: anexsoft.com
Título: Re:Como crear un meme con html5 y javascript
Publicado por: blackdrake en Enero 28, 2016, 09:40:25 AM
Muy bueno!! muchas gracias @graphixx (https://underc0de.org/foro/index.php?action=profile;u=21091) :D