molily: schleife / while / window settimeout

Beitrag lesen

Hallo,

while(x<2000){Fokus_Pixel_Scean(); x++;}

function Fokus_Pixel_Scean(x, y){

Fokus_Pixel = ctx.getImageData(x, 1500, 1, 1).data;

Du rufst in der Schleife immer wieder getImageData auf. Das ist langsam. Wenn du ohnehin eine ganze Zeile oder gar das ganze Bild untersuchst, dann rufe getImageData mit einem größeren Bereich auf, nicht immer 1x1 Pixel. Dann bekommst du zwar einen großen Array mit [r1, g1, b1, a1, r2, g2, b2, a2…] zurück, aber darauf zu operieren ist kein großes Problem.

Also mehr so

var allData = ctx.getImageData(0, 0, canvas.width, canvas.height).data;

so meine idee ist jetzt das ganze über einen timeout laufen zulassen statt while. was ja nicht richtig gut wäre.

setTimeout hat ein Minimum zwischen 4-10ms. Du kannst in einem Durchlauf natürlich mehrere Pixel bearbeiten, solange das in diesem Zeitraum funktioniert.

Manche Browser kennen setImmediate.

Frage 1: gib es einen fachlich richtigen weg für die auslesung von pixeln?

Auf jeden Fall nicht Pixel für Pixel getImageData aufrufen.

Schau ob es eine schnellere Variante gibt, die z.B. eine ganze Zeile auf einmal ausliest statt >immer nur ein einziges Pixel.

Frage 2: in welche richtung denkst du da? da hab ich keinen ansatz

Genau das habe ich oben beschrieben.

Frage 3: hat jemand von euch mit javascript eine bilderkennung geschrieben???

Dafür gibt es viele Beispiele.

Mathias