Usando el <canvas>
elemento HTML5 , me gustaría cargar un archivo de imagen (PNG, JPEG, etc.), dibujarlo en el lienzo completamente transparente y luego desvanecerlo. He descubierto cómo cargar la imagen y dibujarla en el lienzo, pero no sé cómo cambiar su opacidad una vez que se ha dibujado.
Aquí está el código que tengo hasta ahora:
var canvas = document.getElementById('myCanvas');
if (canvas.getContext)
{
var c = canvas.getContext('2d');
c.globalAlpha = 0;
var img = new Image();
img.onload = function() {
c.drawImage(img, 0, 0);
}
img.src = 'image.jpg';
}
¿Alguien me indicará en la dirección correcta como una propiedad para establecer o una función para llamar que cambiará la opacidad?
canvas
elemento el que tiene laglobalAlpha
propiedad, sino el contexto que se obtiene del lienzo.canvas2d.fillStyle = "rgba(255, 255, 255, 0.5)";
no funciona. El valor debe estar en hexadecimal.Algún código de ejemplo más simple para usar
globalAlpha
:Si necesitas
img
ser cargado:Notas:
Configure el
'src'
último, para garantizar queonload
se llame a su controlador en todas las plataformas, incluso si la imagen ya está en el caché.Envuelva los cambios a cosas como
globalAlpha
entre asave
yrestore
(de hecho, úselos mucho), para asegurarse de no cambiar la configuración desde otro lugar, particularmente cuando se llamarán fragmentos de código de dibujo desde eventos.fuente
globalAlpha
no difumina nada. Establecerá el alfa para todos los dibujos posteriores (no cambia nada que ya esté dibujado), por lo que en el código de ejemplo lo envuelvosave
yrestore
, para limitar a qué se aplica.Editar:
La respuesta marcada como "correcta" no es correcta.Es facil de hacer. Pruebe este código, intercambiando "ie.jpg" con cualquier imagen que tenga a mano:
La clave es la propiedad globalAlpha.
Probado con IE 9, FF 5, Safari 5 y Chrome 12 en Win7.
fuente
La publicación es antigua, hasta ahora iré con mi sugerencia. La sugerencia se basa en la manipulación de píxeles en el contexto 2D del lienzo. De MDN:
Para manipular píxeles usaremos dos funciones aquí: getImageData y putImageData
Uso de la función getImageData:
y sintaxis putImageData:
Donde el contexto es tu lienzo contexto 2D
Entonces, para obtener valores rojo, verde, azul y alfa, haremos lo siguiente:
Donde x es x offset, y es y offset en lienzo
Entonces tenemos un código que hace que la imagen sea medio transparente
Puede hacer sus propios "sombreadores" - vea el artículo completo de MDN aquí
fuente
Usted puede. El lienzo transparente se puede desvanecer rápidamente mediante el uso de la operación global compuesta de destino . No es 100% perfecto, a veces deja algunas huellas, pero podría modificarse, dependiendo de lo que sea necesario (es decir, use 'source-over' y llénelo de color blanco con alfa a 0.13, luego se desvanecen para preparar el lienzo).
fuente
Creo que esto responde mejor a la pregunta, en realidad cambia el valor alfa de algo que ya se ha dibujado. Tal vez esto no era parte de la API cuando se hizo esta pregunta.
contexto 2d dado
c
.fuente
Si usa la biblioteca jCanvas , puede usar la propiedad de opacidad al dibujar. Si necesita un efecto de desvanecimiento además de eso, simplemente vuelva a dibujar con diferentes valores.
fuente
No puedes Se trata de gráficos de modo inmediato. Pero puede simularlo dibujando un rectángulo sobre él en el color de fondo con una opacidad.
Si la imagen está sobre algo que no sea un color constante, entonces se vuelve un poco más complicado. Debería poder utilizar los métodos de manipulación de píxeles en este caso. Simplemente guarde el área antes de dibujar la imagen y luego vuelva a mezclarla con una opacidad.
fuente