Estoy utilizando el lienzo HTML5 para cargar una sola instancia de una imagen que luego blitto varias veces en un solo lienzo. La imagen necesita una ligera manipulación basada en píxeles para personalizarla. Mi plan de ataque inicial fue cargar la imagen, aplicarla en un lienzo de respaldo, dibujar mis modificaciones sobre ella y luego tomar los datos de la imagen y almacenarlos en caché para usarlos en el futuro.Caché HTML5 de imágenes en canvas/preguntas de putImageData
Aquí hay un código que he escrito a tal efecto:
context.drawImage(img, 0, 0);
context.fillStyle = '#ffffff';
context.fillRect(0, 0, 2, 2); // Draw a 2x2 rectangle of white pixels on the top left of the image
imageData = context.getImageData(0, 0, img.width, img.height);
cusomImage = imageData;
Aunque esto funciona, me he dado cuenta de que mi imagen (que es un PNG transparente) no mantiene la transparencia. En cambio, cuando uso putImageData para colocarlo en mi lienzo frontal, se representa con un fondo negro. ¿Cómo mantengo la transparencia?
¡Cualquier sugerencia es bienvenida!
¿Por qué agarra los datos de la imagen para usar en el futuro? Puede usar el lienzo en sí cuando necesita dibujarlo: 'newContext.drawImage (oldCanvas, 0, 0);' Creo que sería más rápido y posiblemente use menos memoria. – andrewmu
¿Eso no significa que tengo que dibujar cada mapa de bits en su propio lienzo individual? Estoy anticipando entre 5 y 10 bitmaps. Sin duda, eso es menos que óptimo? – ndg