Jochen: Rekursive Funktion liefert ungewünschtes Ergebnis

Beitrag lesen

Hallo Rolf,

Du willst einen weißen Streifen finden, der

  • möglichst hoch oben ist
  • hoch genug ist

Richtig?

Nicht ganz richtig.
Ich will einen weißen Streifen finden, der

  • möglichst weit unten ist
  • hoch genug ist

So gehts (nur iterativ):

function suche_freiraum($line = 842,$img2) {
    $freiraum = $failed = 0;
    $fp = fopen($_SERVER['DOCUMENT_ROOT']."/tmp/pixel.txt",'a+');
    for($myY = $line;$myY > 500;$myY--) {
        for($myX = 0;$myX < 530;$myX++) {
            $pixel = $img2->getImagePixelColor($myX,$myY);
            $colors = $pixel->getColorAsString();
            if($colors != "srgba(255,255,255,0)" && $colors != "srgb(255,255,255)") {   // wenn kein weißes Pixel
                $failed++;
            }
        }
        // Line zuende und failed noch auf 0 ?
        if($failed == 0) {
            $freiraum++;
            fwrite($fp,"line ".$myY.": all white. Freiraum = ".$freiraum."\n");
        } else {
            fwrite($fp,"line ".$myY.": failed\n");
            $freiraum = 0;
            $failed = 0;
        }
        if($freiraum == 150) {
            fclose($fp);
            return $myY;
        }
    }
    fclose($fp);
    return 0; // kein Freiraum gefunden
}

Jochen