En utilisant l' <canvas>
élément HTML5 , je voudrais charger un fichier image (PNG, JPEG, etc.), le dessiner sur la toile de manière complètement transparente, puis le fondre dedans. J'ai compris comment charger l'image et la dessiner dans le toile, mais je ne sais pas comment changer son opacité une fois qu'il a été dessiné.
Voici le code que j'ai jusqu'à présent:
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';
}
Quelqu'un pourra-t-il m'orienter dans la bonne direction comme une propriété à définir ou une fonction à appeler qui changera l'opacité?
canvas
élément qui a laglobalAlpha
propriété, mais le contexte que vous obtenez du canevas.canvas2d.fillStyle = "rgba(255, 255, 255, 0.5)";
cela ne fonctionne pas. La valeur doit être en hexadécimal.Un exemple de code plus simple à utiliser
globalAlpha
:Si vous devez
img
être chargé:Remarques:
Définissez le
'src'
dernier, pour garantir que votreonload
gestionnaire est appelé sur toutes les plates-formes, même si l'image est déjà dans le cache.Enveloppez les modifications dans des choses comme
globalAlpha
entre asave
etrestore
(en fait, utilisez-les beaucoup), pour vous assurer que vous n'encombrez pas les paramètres ailleurs, en particulier lorsque des bits de code de dessin vont être appelés à partir d'événements.la source
globalAlpha
ne brouille rien. Il définira l'alpha pour tous les dessins suivants (cela ne change rien de déjà dessiné), c'est pourquoi dans l'exemple de code je l'enveloppesave
etrestore
, pour limiter ce à quoi il s'applique.Éditer:
La réponse marquée comme "correcte" n'est pas correcte.C'est facile à faire. Essayez ce code, en remplaçant "ie.jpg" par l'image que vous avez à portée de main:
La clé est la propriété globalAlpha.
Testé avec IE 9, FF 5, Safari 5 et Chrome 12 sur Win7.
la source
Le message est ancien jusqu'à présent, je vais suivre ma suggestion. La suggestion est basée sur la manipulation de pixels dans le contexte de canvas 2d. De MDN:
Pour manipuler les pixels, nous utiliserons deux fonctions ici - getImageData et putImageData
Utilisation de la fonction getImageData:
et la syntaxe putImageData:
Où le contexte est votre contexte 2D Canvas
Donc, pour obtenir des valeurs bleu vert rouge et alpha, nous ferons ce qui suit:
Où x est le décalage x, y est le décalage y sur le canevas
Nous avons donc du code rendant l'image semi-transparente
Vous pouvez créer vos propres "shaders" - voir l'article complet de MDN ici
la source
Vous pouvez. Le canevas transparent peut être rapidement effacé à l'aide d' une opération composite globale de destination . Ce n'est pas parfait à 100%, parfois il laisse des traces mais il pourrait être modifié, selon ce qui est nécessaire (c'est-à-dire utiliser 'source-over' et le remplir de couleur blanche avec alpha à 0,13, puis s'estomper pour préparer la toile).
la source
Je pense que cela répond le mieux à la question, cela change en fait la valeur alpha de quelque chose qui a déjà été dessiné. Peut-être que cela ne faisait pas partie de l'API lorsque cette question a été posée.
compte tenu du contexte 2D
c
.la source
Si vous utilisez la bibliothèque jCanvas , vous pouvez utiliser la propriété d' opacité lors du dessin. Si vous avez besoin d'un effet de fondu en plus, redessinez simplement avec des valeurs différentes.
la source
Tu ne peux pas. Ce sont des graphiques en mode immédiat. Mais vous pouvez en quelque sorte le simuler en dessinant un rectangle dessus dans la couleur d'arrière-plan avec une opacité.
Si l'image est sur autre chose qu'une couleur constante, cela devient un peu plus délicat. Dans ce cas, vous devriez pouvoir utiliser les méthodes de manipulation des pixels. Enregistrez simplement la zone avant de dessiner l'image, puis mélangez-la en haut avec une opacité par la suite.
la source