[GD] Zähle die Häufigkeit

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [GD] Zähle die Häufigkeit

    Hallo,

    ich will jeden einzelnen Pixel eines Bildes scannen und den Farbwert ausgeben lassen.
    Da ein Bild z.B: 512*320 aus 163840 Pixeln besteht, möchte ich nur die am häufigst vorkommenden Pixel weiterverarbeiten.
    Z.B. Die 10 häufigsten.

    Wie gehe ich da am besten vor mit der internen Verarbeitung?
    Wichtig für mich sind im Grunde die 10 oder 20 bzw. variablen häufigsten vorkommenden Farbwertpixel.
    Den Rest kann man wegwerfen bzw. nicht weiterverarbeiten.

    Gruss

  • #2
    schau dir mal die klasse an, vielleicht hilft dir das auf die sprünge:
    http://www.zend.com/codex.php?id=565&single=1

    konvertiert ein image zu html, d.h. du brauchst eigentlich nur den teil, wo die werte ermittelt werden ... und dann gehts weiter
    Kissolino.com

    Kommentar


    • #3
      Original geschrieben von Wurzel
      schau dir mal die klasse an, vielleicht hilft dir das auf die sprünge:
      http://www.zend.com/codex.php?id=565&single=1

      konvertiert ein image zu html, d.h. du brauchst eigentlich nur den teil, wo die werte ermittelt werden ... und dann gehts weiter

      Hi Wurzel,

      leider brachte mir dein Tipp nichts
      Vielleicht aber doch und ich verstehe es nur nicht?!

      Gruss

      Kommentar


      • #4
        PHP-Code:
        <?
        $file  = "angi.jpg";
        $limit = 20;

        $im   = imagecreatefromjpeg($file);
        $size = getimagesize($file);

        for ($y=0; $y<$size[1]; $y++) {
           for ($x=0; $x<$size[0]; $x++) {
              $rgb = ImageColorAt($im, $x, $y);
              ++$array[$rgb];
              ++$cols;
           }
        }

        arsort($array);
        reset($array);

        print "<table border=1><tr><th>#</th><th>color</th><th>red</th><th>blue</th><th>green</th><th>times</th></tr>";
        while (list ($key, $val) = each ($array)) {
            $i++;
            $coltotal += $val;
            $col = imagecolorsforindex($im, $key);
            print "<tr><td>$i</td><td>$key</td><td>".$col["red"]."</td><td>".$col["green"]."</td><td>".$col["blue"]."</td><td>${val}x</td></tr>\n";
            if ($i >= 20) {
               print "<tr><th colspan=6>Limit $limit erreicht (i.e. $coltotal von insgesammt $cols Farben)</th></tr>\n";
               break;
            }
        }
        print "</table>";

        Kommentar


        • #5
          @hand
          darf ich auch mal in deine schublade gucken wo holst du das ganze zeug nur her
          Kissolino.com

          Kommentar


          • #6
            http://at.php.net/manual/de/function.imagecolorat.php
            Hab das vom zweiten Beispiel dort abgeleitet

            Kommentar


            • #7
              jo mai, wengst homm ma vonna idä här o gmeinsame basi ghobt
              Kissolino.com

              Kommentar

              Lädt...
              X