2015-04-24 13 views
7

Come posso convertire un Uint8ClampedArray (come quello utilizzato per la memorizzazione di dati di immagine su tela HTML5) in un array normale, in cui i valori non saranno vincolati a 0 - 255?Converti Uint8ClampedArray nell'array normale

+0

È non puoi, almeno non se intendi conservare le immagini? – adeneo

+0

Scusa, non ero abbastanza chiaro. Ho bisogno di copiare i dati dell'array di Uint8ClampedArray in un altro array, che sarebbe un array normale. Quindi, quando ho bisogno, ad esempio, di regolare la luminosità dell'immagine, posso manipolare i normali dati dell'array e copiare i dati di nuovo nell'array clamped. Altrimenti, se manipolo direttamente array clampato, ottengo dei pixel "bruciati". – cincplug

+0

Non pensavo che fosse fattibile, ma non ne ho idea. Se non è possibile archiviare le immagini dall'area di disegno in un array normale, poiché è binario, probabilmente non è possibile copiare tali dati in un array normale. – adeneo

risposta

9

È possibile convertire una matrice tipizzata per una serie regolare utilizzando Array.prototype.slice

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

Anche se si utilizza ES6 si può essere in grado di utilizzare Array.from invece:

var normalArray = Array.from(typedArray); 

Vedi MDN - JavaScript typed arrays