2011-10-26 30 views
6

Esto podría no ser posible, simplemente sería realmente ideal para mi situación. Estoy usando un lienzo html5 como presentador de diapositivas que el usuario puede dibujar y guardar en su máquina local.Guardar lienzo html5 como datos en la base de datos mysql

Mi objetivo es guardarlo en nuestra base de datos de una manera diferente.

lo que quiero que suceda:

Las cargas de lona de la corredera y el usuario puede dibujar en ella. Una vez que tocan guardar, guarda los datos de las líneas en una celda de nuestra base de datos. Cuando el usuario vuelve a iniciar sesión para ver la diapositiva, muestra la diapositiva original con las anotaciones y luego la coloca encima.

Usando este método no tendré que almacenar miles de imágenes para cada persona única y podrán borrar anotaciones pasadas sin borrar la diapositiva original.

Aquí está mi código para cargar:

lona:

<input type="button" id="savepngbtn" value="Save Slide"> 

<!-- Main Canvas/Main Slide --> 
<div id="main"><canvas id="drop1" class="drop" style=" background-repeat:no-repeat;" width="680" height="510"></canvas></div> 

Tirando de imagen original:

var img = new Image(); 
img.src = 'pdf_images/pdf-save-0.png'; 
img.onload = function() { 
    oCtx.drawImage(img, 0, 0) 
} 

Lo que necesito:

  • la función Guardar/función para guardar las líneas creadas como datos en base de datos
  • Código para cargar datos y mostrarlos en el lienzo tal como se creó anteriormente.

No estoy seguro si algo de esto es posible, pero hombre, sería realmente agradable y un salvavidas! ¡Gracias!

+0

Solo mis 2 centavos, pero a menos que la base de datos que está utilizando esté configurada específicamente para optimizar el almacenamiento de blobs grandes, me mantendría alejado de guardar datos de imagen en esa base de datos ... si está utilizando MySQL, definitivamente no debería t almacenarlo allí, será mucho más lento que simplemente guardarlo en HD y almacenar el nombre del archivo. –

Respuesta

5

El lienzo es transparente por defecto para que pueda colocarlo fácilmente encima de otras imágenes y dibujar sobre él.

Usa canvas.toDataURL() para obtener base64 codificado png del lienzo. Puede guardar eso en su base de datos. Puede enviar los datos al servidor utilizando la post-solicitud normal. Luego puede restaurarlo recuperando los datos de su base de datos y configurándolo como elemento de un elemento Imagen y volviendo a escribir la imagen en el lienzo utilizando el contexto de drawImage on canvas 2d.

O puede registrar cada alimentación que los usuarios extraen y guardarlos en la base de datos. Al cargar la página puede simplemente volver a dibujar los trazos.

1

Aunque está destinado a capturar firmas, estoy seguro de que el proyecto Signature Pad de Thomas J Bradley tendría información útil y ejemplos de código para guardar y regenerar dibujos capturados.

Cuestiones relacionadas