¿Es posible hacer que la imagen de fondo de un DIV sea un lienzo que se pueda modificar con getContext ("2d")?HTML5 Canvas como fondo de la imagen CSS?
Respuesta
Puede tener un lienzo dentro del div con posición css absoluta, otros elementos tienen que tener un índice z mayor que el lienzo.
Bueno, podría colocar un elemento de lienzo dentro del div, maximizar su altura y ancho, establecer su posición en relativa y su índice z en un valor negativo.
Sin embargo, si desea utilizar un CSS real background-image:...
, deberá crear su imagen dentro de su lienzo. A continuación, puede utilizar toDataURL
para obtener una URL de datos que se puede utilizar como valor para su original background-image
:
var canvas = document.getElementById('canvas');
var data = canvas.toDataURL();
var myElement = document.getElementById('myelement');
myElement.style.backgroundImage = 'url('+data+')';
Si no desea crear una nueva fondo, pero manipular una ya existente, cargue el original fondo en un objeto de imagen (o conseguir una referencia) y el uso de drawImage
:
var image = new Image();
image.onload = function(){
context.drawImage(this,0,0);
someCallbackToManipulateTheImage();
}
var src = myElement.style.backgroundImage.substr(4);
src.substr(0,src.length - 1);
image.src = src;
Definir el fondo de la imagen de la div a esto:
"url('" + canvas.toDataURL() + "')";
Editar: En ese momento, tenga en cuenta que también puede hacer lo que desee con el lienzo, ya que la imagen de fondo seguirá conteniendo solo los datos de imagen que estaban en el lienzo en el momento en que llamó al lienzo. toDataURL(). Siéntase libre de descartar o dibujar en el lienzo, ya que no afectará el fondo de su div en ese punto.
Suponiendo que esto funciona como se esperaba, tanto esta como la respuesta elegida son 100% correctas. Esta es una asignación de la propiedad background-image en CSS, la otra basada en z-indexing. –
Creo que esto está más en sintonía con lo que el OP estaba buscando, para reemplazar la representación del lienzo dibujado dinámicamente con una imagen estática, aquí codificada en la URL. –
- 1. Use <canvas> como fondo CSS
- 2. Strange HTML5 Canvas drawComportamiento de la imagen
- 3. HTML5 Canvas Escala de imagen Edición
- 4. utilizando HTML5 Canvas: gire la imagen sobre el punto arbitrario
- 5. Conversión de imagen a Canvas/HTML5
- 6. UIWebView w/HTML5 Canvas y Retina Display
- 7. Rendimiento de imagen en movimiento en la página web a través de CSS vs HTML5 Canvas
- 8. Crear imagen 3D de anáglifo en canvas HTML5
- 9. ¿Cómo escribir texto sobre la imagen en canvas HTML5?
- 10. Canvas HTML5: ¿cómo dibujar una línea sobre un fondo de imagen?
- 11. ¿Cómo tener una imagen dinámica como fondo de CSS?
- 12. SVG como fondo CSS
- 13. ¿Qué formatos de imagen son compatibles con CANVAS en html5?
- 14. css con imagen de fondo sin repetir la imagen
- 15. Lienzo - ¿Cambiar colores de una imagen usando HTML5/CSS/JS?
- 16. CSS - Sprites como imágenes de fondo
- 17. CSS Path Imagen de fondo Problemas
- 18. Dart HTML5 Canvas Library?
- 19. imagen html5 cultivo
- 20. lienzo html5 usa la imagen como máscara
- 21. HTML5 Canvas evita cualquier representación de subpíxeles
- 22. HTML5 canvas hittesting
- 23. Canvas HTML5: diferentes trazos
- 24. HTML5 Canvas: zoom
- 25. HTML5 - canvas createLinearGradient vertical
- 26. canvas HTML5 "restablecer" fillStyle
- 27. HTML5 Canvas Vector Graphics?
- 28. Centrar una imagen de fondo, usando CSS
- 29. CSS: Imagen de fondo y relleno
- 30. css imagen de fondo ajuste a DIV
Hm, interesante. A alguien le disgustó esta respuesta. – Zeta
Maravillosamente hecho – TaterJuice
¿Hay alguna manera de utilizar un lienzo como imagen de fondo de DIV de fondo múltiple sin insertar múltiples lienzos o generar varias URL de datos igual que --webkit-canvas? Ahorrará memoria si es posible. Si puede especificar el lienzo URL en el archivo css, simplificará mucho la programación ya que no necesita insertar lienzo para cada DIV con los mismos fondos. – sean