Me gustaría copiar TODOS los contenidos de un lienzo y transferirlos a otro todo en el lado del cliente. Creo que usaría el método canvas.toDataURL()
y context.drawImage()
para implementar esto, pero me encuentro con algunos problemas.
Mi solución sería obtener Canvas.toDataURL()
y almacenar esto en un objeto Image en Javascript, y luego usar el context.drawImage()
método para volverlo a colocar.
Sin embargo, creo que el toDataURL
método devuelve una etiqueta codificada de 64 bits con "data:image/png;base64,"
antepuesta. Esto no parece ser una etiqueta válida (siempre podría usar RegEx para eliminar esto), pero ¿es esa cadena codificada de 64 bits DESPUÉS de la "data:image/png;base64,"
subcadena una imagen válida? ¿Puedo decir image.src=iVBORw...ASASDAS
y dibujar esto de nuevo en el lienzo?
He visto algunos problemas relacionados: Mostrar la imagen del lienzo de un lienzo a otro usando base64
Pero las soluciones no parecen ser correctas.
HTMLCanvasElement
), no puedes dibujar un contexto (CanvasRenderingContext2D
). Usar en sumyContext.canvas
lugar.source canvas
viene ...@ robert-hurst tiene un enfoque más limpio.
Sin embargo, esta solución también se puede usar, en lugares donde realmente desea tener una copia de la URL de datos después de la copia. Por ejemplo, cuando está creando un sitio web que utiliza muchas operaciones de imagen / lienzo.
fuente