42
在JavaScript中,Uint8Array
和Uint8ClampedArray
有什麼區別? 據我所知,Uint8ClampedArray
與畫布一起用於像素操作。爲什麼是這樣,有什麼好處?Uint8Array和Uint8ClampedArray之間的區別
在JavaScript中,Uint8Array
和Uint8ClampedArray
有什麼區別? 據我所知,Uint8ClampedArray
與畫布一起用於像素操作。爲什麼是這樣,有什麼好處?Uint8Array和Uint8ClampedArray之間的區別
看看Uint8ClampedArray和Uint8Array的示例,看起來不同之處在於分配值時如何處理值。
如果您試圖將一個元素設置爲一個被限制的數組,其值爲0-255
以外的任何值,它將簡單地默認爲0或255(取決於值是小還是大)。一個正常的Uint8Array
數組只需要該值的前8位。
實例:
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
還要注意的是'Uint8Array([0.9])''是[0]','但Uint8ClampedArray([0.9])''是[1]',即。夾緊版本使用四捨五入,但基本版本使用地板。 –
OP提到這是用於畫布中的像素值,這是飽和算術的捷徑嗎? – Indolering
@Felix,所以'Uint8Array'更高性能,因爲沒有邊界檢查需要完成? – Pacerier