[GD] Zähle die Häufigkeit

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [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

    Comment


    • #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

      Comment


      • #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>";

        Comment


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

          Comment


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

            Comment


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

              Comment

              Working...
              X