2015-04-24 8 views
7

Wie kann ich ein Uint8ClampedArray (wie es zum Speichern von HTML5-Canvas-Bilddaten verwendet wird) in ein reguläres Array konvertieren, in dem die Werte nicht auf 0 - 255 beschränkt sind?Uint8ClampedArray in reguläres Array konvertieren

+0

Sie Kannst du das nicht, zumindest nicht, wenn du vorhast, die Bilder zu behalten? – adeneo

+0

Entschuldigung, ich war nicht klar genug. Ich muss die Array-Daten von Uint8ClampedArray in ein anderes Array kopieren, das ein reguläres Array wäre. Wenn ich zum Beispiel die Helligkeit des Bildes anpassen muss, kann ich die Daten des regulären Arrays manipulieren und diese Daten zurück in das geklammerte Array kopieren. Andernfalls, wenn ich das geklammerte Array direkt manipuliere, bekomme ich Pixel "gebrannt". – cincplug

+0

Ich würde nicht denken, dass das machbar war, aber ich habe wirklich keine Ahnung. Wenn Sie die Bilder nicht in einem regulären Array speichern können, weil sie binär sind, können Sie diese Daten wahrscheinlich auch nicht in ein reguläres Array kopieren. – adeneo

Antwort

9

Sie können eine typisierte Array zu einer regelmäßigen Anordnung konvertieren von Array.prototype.slice

var typedArray = new Uint8ClampedArray([1, 2, 3, 4]); 
var normalArray = Array.prototype.slice.call(typedArray); 

auch verwenden, wenn ES6 mit Sie in der Lage sein kann Array.from stattdessen zu verwenden:

var normalArray = Array.from(typedArray); 

Siehe MDN - JavaScript typed arrays