web-dev-qa-db-fra.com

Différence entre Uint8Array et Uint8ClampedArray

Quelle est la différence entre Uint8Array et Uint8ClampedArray en JavaScript? Je comprends que Uint8ClampedArray est utilisé avec canvas pour les manipulations de pixels. Pourquoi cela et quel est l'avantage?

63
Luka

En regardant les exemples pour int8ClampedArray et int8Array , il semble que la différence réside dans la façon dont les valeurs sont traitées lorsqu'elles sont affectées.

Si vous essayez de définir un élément d'un tableau restreint sur une valeur en dehors de la plage 0-255, Il sera simplement par défaut 0 ou 255 (selon que la valeur est plus petite ou plus grande). Un tableau Uint8Array Normal ne prend que les 8 premiers bits de la valeur.

Exemples:

var x = new Uint8ClampedArray([17, -45.3]);
console.log(x[0]); // 17
console.log(x[1]); // 0
console.log(x.length); // 2

var x = new Uint8Array([17, -45.3]);
console.log(x[0]); // 17
console.log(x[1]); // 211
console.log(x.length); // 2
77
Felix Kling