Unterschied zwischen Uint8Array und Uint8ClampedArray

Lesezeit: 1 Minute

Benutzer-Avatar
Lukas

Was ist der Unterschied zwischen Uint8Array und Uint8ClampedArray in Javascript? ich verstehe das Uint8ClampedArray wird mit Leinwand für Pixelmanipulationen verwendet. Warum ist das so und was ist der Vorteil?

Benutzer-Avatar
Felix Klinge

Betrachtet man die Beispiele für Uint8ClampedArray und Uint8Arraysieht es so aus, als ob der Unterschied darin besteht, wie Werte bei der Zuweisung behandelt werden.

Wenn Sie versuchen, ein Element eines geklammerten Arrays auf einen beliebigen Wert außerhalb des Bereichs zu setzen 0-255, wird es einfach standardmäßig auf 0 oder 255 gesetzt (je nachdem, ob der Wert kleiner oder größer ist). Ein normaler Uint8Array array nimmt nur die ersten 8 Bit des Werts.

Beispiele:

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

  • Beachten Sie auch das Uint8Array([0.9]) ist [0]aber Uint8ClampedArray([0.9]) ist [1], dh. Die geklemmte Version verwendet Rundungen, aber die Basisversion verwendet den Boden.

    – Dan-Mann

    16. Mai 2016 um 9:22 Uhr

  • Das OP erwähnte, dass dies für Pixelwerte in der Leinwand verwendet wurde. Ist dies eine Abkürzung für gesättigte Arithmetik?

    – Indolieren

    30. September 2016 um 19:54 Uhr

  • @Felix, also Uint8Array ist performanter, weil keine Begrenzungsprüfung durchgeführt werden muss?

    – Schrittmacher

    22. März 2017 um 15:59 Uhr

  • Ich denke, Uint8Array wäre schneller – es sei denn, Sie verwenden die Klemmfunktionen für Grafiken, die in diesem Fall möglicherweise schneller sind.

    – Tomate

    2. November 2018 um 10:39 Uhr

  • @llya Diese sind für den Bild-/Video-/Audioprozess. Das Hauptmerkmal ist: es läuft nie über/unter. Wenn Sie versuchen, die Helligkeit in einem Bild zu erhöhen: maximale Helligkeit (255) + 1 sollte 255 ergeben, nicht auf Null überlaufen.

    – J-16 SDiZ

    4. April 2019 um 6:26 Uhr

1158630cookie-checkUnterschied zwischen Uint8Array und Uint8ClampedArray

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy