Est-il possible d'interroger un objet HTML Canvas pour obtenir la couleur à un emplacement spécifique?
javascript
html
canvas
Liam
la source
la source
Avez-vous essayé la méthode getImageData?
la source
idx = (y * width + x) * 4
la réponse de Georg. Cependant, n'oubliez pas d'actualiser cet objet mis en cache chaque fois que l'image change.Color()
constructeur? Cela ne semble exister nulle partOui bien sûr, à condition d'avoir son contexte. Comment obtenir le contexte du canevas?
PS: Si vous prévoyez de faire muter les données et de les redessiner sur le canevas, vous pouvez utiliser
subarray
Vous pouvez expérimenter cela sur http://qry.me/xyscope/ , le code pour cela est dans la source, il suffit de le copier / coller dans la console.
la source
context.getImageData(x, y, 1, 1);
la source
Ouais, consultez getImageData (). Voici un exemple de rupture de captcha avec JavaScript à l'aide de canvas:
http://ejohn.org/blog/ocr-and-neural-nets-in-javascript/
la source
Notez que getImageData renvoie un instantané. Les implications sont:
la source
la source
Vous pouvez utiliser
i << 2
.la source
Oneliner à long pixel de lecture pratique (dessinez le pixel ici )
Afficher l'extrait de code
La première ligne est la partie initiale où vous pouvez changer le sélecteur de canevas
s='.myCanvas'
. Cet oneliner pratique est bon pour tester des algorithmes ou faire une preuve de concept, mais pour le code de production, il est préférable d'utiliser un autre code plus clair et lisible.la source
Si vous souhaitez extraire une couleur particulière de pixel en passant les coordonnées du pixel dans la fonction, cela vous sera utile
x
,y
est la coordonnée dont vous souhaitez filtrer la couleur.La couleur est l'objet, vous obtiendrez la valeur rgb par
color.r
,color.g
,color.b
.la source