Ho bisogno di elaborare pixeldata da un'immagine 1000x1000px * .bmp (~ 1MiB) in javascript
Al momento sono un po 'bloccato, perché la pagina si blocca quando provo a scaricare i dati nella console .
il codice importante finora:get pixel da bitmap
var img = new Image();
img.src = 'image.bmp';
context.drawImage(img, 0, 0);
console.log(context.getImageData(0, 0, canvas.height, canvas.width);
Credo che questo è un problema di prestazioni, ma c'è un modo migliore per accedere ai dati di pixel? Non ho davvero bisogno di leggerlo tutto in una volta, anche leggendo i pixel uno per uno andrebbe bene.
EDIT:
Ecco il codice aggiornato, sarà popolare un 2d-array con il rosso-value del quadro (ho a che fare con una foto in bianco/nero, di modo che è abbastanza)
var img = new Image();
img.src = 'image.bmp';
context.drawImage(img, 0, 0);
var imgData = context.getImageData(0, 0, canvas.height, canvas.width);
var pixel = new Array();
for(i=0;i<canvas.height;i++){
pixel[i] = new Array();
for(j=0;j<canvas.width;j++){
pixel[i][j] = imgData.data[i*canvas.width+j*4];
}
}
//now pixel[y][x] contains the red-value of the pixel at xy in img
problemi di prestazioni :) unico vezzo è che righe/colonne sono invertiti
Domanda stupida: hai provato a farlo prima con una piccola immagine per farlo funzionare? – epascarello
Stai scaricando * 1 milione di pixel * sulla console e ti stai chiedendo perché il browser si blocca? Sul serio? –
Pekka: sì, ho pensato che fosse un problema di prestazioni, se conoscessi un modo per accedere ai pixel uno per uno, non avrei chiesto. – fruight