HTMLCanvasElement
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
L'interface HTMLCanvasElement
fournit un ensemble de propriétés et de méthodes pour manipuler la disposition et la représentation des éléments canvas. L'interface HTMLCanvasElement
hérite également des propriétés et des méthodes de l'interface HTMLElement
.
Propriétés
Propriétés hérités de son parent, HTMLElement
.
Méthodes
Méthodes héritées de son parent, HTMLElement
.
Nom & arguments | Résultat | Description |
---|---|---|
getContext(in
|
RenderingContext |
Renvoie un contexte de dessin sur le canvas, ou null si l'ID de contexte
n'est pas supporté. Un contexte de dessin vous permet de dessiner sur le
canvas. Appeler getContext avec "2d" renvoie un object
CanvasRenderingContext2D , alors que
l'appeler avec "experimental-webgl" (ou
"webgl" ) renvoie un objet
WebGLRenderingContext . Ce dernier contexte
n'est disponible que dans les navigateur qui implémentent
WebGL.
|
supportsContext()
Expérimental
|
Boolean |
Renvoie une valeur Boolean indiquant si le contexte
donné est supporté par ce canvas.
|
setContext()
Expérimental
|
void |
Chnage de contexte de l'élément en rapport avec celui fourni. |
transferControlToProxy()
Expérimental
|
CanvasProxy |
Retourne un mandataire pour autoriser le canvas à être utilisé dans un
autre Worker .
|
toDataURL (in optional DOMString
type, in any ...args)
|
DOMString |
Renvoie une data: URL contenant une représentation de
l'image au format spécifié par l'argument type (PNG par
défaut). L'image renvoyée est en 96dpi.
|
toDataURLHD()
Expérimental
|
DOMString |
Renvoie une data: URL contenant une représentation de
l'image au format spécifié par type (PNG par défaut).
L'image renvoyée est à la résolution native du canvas.
|
toBlob (in FileCallback callback, in optional
DOMString type, in any ...args)
|
void |
Renvoie un objet Blob représentant l'image contenue
dans le canvas ; ce fichier peut être mis en cache sur le disque ou
stocké en mémoire au choix du navigateur. Si type n'est pas
précisé, le format de l'image est image/png . L'image
renvoyée est en 96dpi.
|
toBlobHD (in FileCallback callback, in optional
DOMString type, in any ...args)
Expérimental
|
void |
Renvoie un objet Blob représentant l'image contenue
dans le canvas ; ce fichier peut être mis en cache sur le disque ou
stocké en mémoire au choix du navigateur. Si type n'est pas
précisé, le format de l'image est image/png . L'image
renvoyée est à la résolution native du canvas.
|
mozGetAsFile (in DOMString name, in
optional DOMString type)
Non standard
|
File |
Renvoie un objet File représentant l'image contenue
dans le canvas ; ce fichier est en mémoire avec le
nom précisé. Si type n'est pas précisé, le
fotmat de l'image est image/png .
|
void mozFetchAsStream(in
`nsIInputStreamCallback` callback,
[optional] in DOMString type)
Non standard
|
void |
Crée un nouveau flux d'entrée qui, quand il est prêt, fournit le contenu
du canvas en tant que données d'image. Quand le nouveau flux est prêt,
la fonction de rappel spécifiée
nsIInputStreamCallback.onInputStreamReady()
est appelée. Si type n'est pas précisée, Le format de
l'image est image/png.
Note : Cette méthode ne peut être utilisée que depuis le code chrome. |
Examples
Example: Obtenir la data-url du canvas
D'abord, dessinez dans le canvas, ensuite appelez canvas.toDataURL()
pour obtenir la data: URL du canvas.
function test() {
var canvas = document.getElementById("canvas");
var url = canvas.toDataURL();
var nouvelleImg = document.createElement("img");
nouvelleImg.src = url;
document.body.appendChild(nouvelleImg);
}
Example: Obtenir un fichier représentant le canvas
Une fois que vous avez dessiné du contenu dans un canvas, vous pouvez le convertir dans un fichier avec l'un des formats supportés. Par exemple, l'extrait de code ci-dessous récupère l'image contenue dans l'élément canvas avec l'ID "canvas", en effectue une copie au format PNG, puis ajoute un nouvel élément <img>
au document, dont l'image source est celle créée en utilisant le canvas.
function test() {
var canvas = document.getElementById("canvas");
canvas.toBlob(function (blob) {
var nouvelleImg = document.createElement("img"),
url = URL.createObjectURL(blob);
nouvelleImg.onload = function () {
// Il n'est plus nécessaire de lire le blob, il est donc révoqué
URL.revokeObjectURL(url);
};
nouvelleImg.src = url;
document.body.appendChild(nouvelleImg);
});
}
Vous pouvez utiliser cette technique en association avec les événemments de souris pour effectuer un changement d'images dynamique (niveau de gris et couleur dans cet exemple) :
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>MDC Example</title>
<script type="text/javascript">
function afficherImageCouleur() {
this.style.display = "none";
this.nextSibling.style.display = "inline";
}
function afficherImageGrise() {
this.previousSibling.style.display = "inline";
this.style.display = "none";
}
function supprimerCouleurs() {
var aImages = document.getElementsByClassName("grayscale"),
nImgsLong = aImages.length,
oCanvas = document.createElement("canvas"),
oCtx = oCanvas.getContext("2d");
for (
var nLargeur,
nHauteur,
oImgData,
oImgGrise,
nPixel,
aPix,
nPixLong,
nImgId = 0;
nImgId < nImgsLong;
nImgId++
) {
oImgCouleur = aImages[nImgId];
nLargeur = oImgCouleur.offsetWidth;
nHauteur = oImgCouleur.offsetHeight;
oCanvas.width = nWidth;
oCanvas.height = nHeight;
oCtx.drawImage(oImgCouleur, 0, 0);
oImgData = oCtx.getImageData(0, 0, nLargeur, nHauteur);
aPix = oImgData.data;
nPixLong = aPix.length;
for (nPixel = 0; nPixel < nPixLen; nPixel += 4) {
aPix[nPixel + 2] =
aPix[nPixel + 1] =
aPix[nPixel] =
(aPix[nPixel] + aPix[nPixel + 1] + aPix[nPixel + 2]) / 3;
}
oCtx.putImageData(oImgData, 0, 0);
oImgGrise = new Image();
oImg.src = oCanvas.toDataURL();
oImgGrise.onmouseover = afficherImageCouleur;
oImgCouleur.onmouseout = afficherImageGrise;
oCtx.clearRect(0, 0, nLargeur, nHauteur);
oImgCouleur.style.display = "none";
oImgCouleur.parentNode.insertBefore(oImgGrise, oImgCouleur);
}
}
</script>
</head>
<body onload="supprimerCouleurs();">
<p><img class="grayscale" src="chagall.jpg" alt="" /></p>
</body>
</html>
Remarquez qu'ici nous créons une image PNG ; si vous ajoutez un second paramètre à l'appel de toBlob()
, vous pouvez spécifier le type d'image. Par exemple, pour obtenir l'image au format JPEG :
canvas.toBlob(function(blob){...}, "image/jpeg", 0.95); // JPEG avec une qualité de 95%
Spécifications
Specification |
---|
HTML Standard # htmlcanvaselement |
Compatibilité des navigateurs
BCD tables only load in the browser
Voir aussi
- Elément HTML implementant cette interface :
<canvas>
.