Résumé du contenu : Cet article présente les interfaces courantes de Canvas dans les opérations sur les données de pixels d'image à travers des exemples de code simples et une démo d'image légèrement misérable. Quant à la manière d’utiliser ces interfaces pour obtenir des effets plus complexes, nous continuerons à les décrire dans les chapitres suivants.
1. Remplissage de l'image du canevas ; 2. Définir/obtenir les données de l'image du canevas ; 3. Créer des données d'image du canevas ; 4. Quelques ajouts sur imageData.data ; image Remplissez
/**
* @description
* @param {Number} x La distance entre le point de dessin de départ de l'image et l'extrême gauche de la toile
* @param {Number} y La distance entre le point de dessin de départ de l'image et du haut de la toile
* @param {Number} width La largeur de l'image finale dessinée sur la toile
* @param {Number} height La hauteur de l'image finale dessinée sur la toile
*/
context.drawImage(image, x, y, width, height)
demo_01 est le suivant :
function $(id) { return document.getElementById(id); }
function getImage(url, callback){
var img = document.createElement('img') ;
img.onload = function( ){
callback && callback(this);
img.src = url; >}
function drawImage(){
var url = 'xiangjishi.png';
var canvas = $('draw_image_canvas');
var context = canvas.getContext('2d');
getImage(url, function(img ){
canvas.width = img.width;
canvas.height = img.height;
var offsetX = 20;
var offsetY = 20;
var drawWidth = img.width/ 4;
var drawHeight = img.height/4;
context.drawImage(img, offsetX, offsetY, drawWidth, drawHeight
}); >}
drawImage();
Instructions de démonstration : Chargez xiangjishi.png Une fois le chargement terminé, commencez à partir de la coordonnée (0, 0) par rapport au coin supérieur gauche du canevas. , et dessinez xiangjishi.png sur la toile. L'effet est le suivant :
En voyant cela, vous n'avez peut-être pas une compréhension claire de la signification des quatre paramètres dans context.drawImage(image, x. , y, width, height). Vous pouvez simplement modifier quelques paramètres pour voir l'effet :
Copier le code
context.drawImage(img, offsetX, offsetY, drawWidth, drawHeight);
L'effet de démonstration modifié est le suivant, combiné à la description de l'API ci-dessus, il ne devrait pas être difficile à comprendre. la signification des quatre paramètres
Copier le code
2. Obtenir/définir les données de l'image du canevas
Copiez le code
* @param {Number} width La largeur obtenue
* @param {Number} height La hauteur finale
*/
contexte .getImageData(x, y, width, height)
Cette méthode renvoie un objet ImageData, qui a principalement trois attributs :
imageData.width : combien d'éléments y a-t-il dans chaque ligne
imageData.height : combien d'éléments y a-t-il dans chaque colonne
imageData.data : un tableau unidimensionnel qui stocke la valeur RGBA de chaque pixel obtenu à partir du canevas. Ce tableau contient quatre valeurs pour chaque pixel : rouge, vert, bleu et alpha. Chaque valeur est comprise entre 0 et 255. Par conséquent, chaque pixel du canevas devient quatre valeurs entières dans ce tableau. Les tableaux sont remplis de gauche à droite et de haut en bas.
Copier le code