¿Se puede serializar/deserializar un objeto canvas en javascript?Javascript Canvas Serialización/Deserialización?
Respuesta
Puede obtener acceso directo a píxeles con canvas.getImageData() y .putImageData(). También puede serializar imágenes a una URL de datos con canvas.toDataURL() para publicar en un servidor.
Esto solo funciona en los navegadores más nuevos.
Además del método getImageData
, puede usar canvas.toDataURL()
para obtener un archivo PNG con codificación de URL de datos. Si necesita serializar a una cadena, ahorrará tener que convertir los datos sin formato a una cadena manualmente. Puede deserializar creando una imagen y configurando el src en la URL de datos, y luego dibujándolo en un lienzo.
[Editado para dar cuenta de carga asíncrona (sugerido por olliej).]
function serialize(canvas) {
return canvas.toDataURL();
}
function deserialize(data, canvas) {
var img = new Image();
img.onload = function() {
canvas.width = img.width;
canvas.height = img.height;
canvas.getContext("2d").drawImage(img, 0, 0);
};
img.src = data;
}
Si no recuerdo mal, algunas versiones anteriores de Safari, Opera y puede que no apoyaron toDataURL
, pero las versiones más recientes hacer.
- 1. potentes javascript canvas libraries
- 2. Javascript Canvas formato de pixel
- 3. Javascript canvas detección de colisión
- 4. Colección de Zoom profundo en JavaScript Canvas
- 5. Javascript Sprite Animation Library para Canvas Tag
- 6. Javascript Canvas Diagrama de flujo proyecto?
- 7. Uso del dispatchDraw (Canvas canvas)
- 8. HTML Canvas Unit testing
- 9. HTML5 Canvas: zoom
- 10. addEventListener in Canvas etiqueta
- 11. JavaScript HTML5 Capture keyCode y escribe en Canvas
- 12. código más limpio de arrastrar y soltar en JavaScript Canvas
- 13. canvas HTML5 "restablecer" fillStyle
- 14. Operaciones compuestas en Android Canvas
- 15. Crear mediante programación HTML5 Canvas
- 16. HTML5 Canvas drawing líneas multicolores
- 17. Anti-alias de canvas HTML5?
- 18. Integration Testing the Canvas
- 19. HTML5 - canvas createLinearGradient vertical
- 20. HTML Canvas Tracing
- 21. HTML5 Canvas Vector Graphics?
- 22. Grid vs. Canvas
- 23. Animación SVG o Canvas?
- 24. getPixel from HTML Canvas?
- 25. HTML5 canvas hittesting
- 26. Web Workers y Canvas
- 27. Canvas HTML5: diferentes trazos
- 28. JPopupMenu pantalla en Canvas
- 29. Dart HTML5 Canvas Library?
- 30. Canvas Tutorial/Referencia
Técnicamente, no se garantiza que la imagen se cargue sincrónicamente, por lo que debería hacer el resto del trabajo en el controlador de carga de imágenes – olliej
Buen punto. Lo arreglaré. –