Pixelfarbe wieder erkennen

Porkx

Grünschnabel
Hallo, ich bin hier ziemlich am verzweifeln, also ich versuche aus einem bild verschiedene Pixelfarben zu finden. So nachdem er mir eine Pixelfarbe gefunden hat, möchte ich dass er mir sagt, wie oft die Farbe vorkommt. Aber das bekomme ich nicht wirklich hin. Also z.b.

PHP:
for ($red=0; $red<255; $red++) {
    for ($green=0; $green<255; $green++) {
          for ($blue=0; $blue<255; $blue++) {
                 $ind = imagecolorexact($src,$red,$green,$blue); 
                         if($ind != -1) { echo "farbe ist: rot=".$red." gruen=".$green." blau=".$blue." \n";
break 3;}
}}}

Hier zeigt er mir z.b an so die erste Pixelfarbe die er gefunden hat ist "farbe ist: rot=11 gruen=13 blau=53" .

Jetzt versuch ich, dass er mir sagt, wie oft die Farbe in dem Bild vorkommt.

PHP:
for($b=0;$b<=$breitex;$b++)
{
 for($h=0;$h<=$hoehey;$h++)
 {
 
 if(imagecolorexact($src,11,13,53) != -1) { $i++; }
  
  }
}  


echo $i;

?>

Hierbei läuft das aber dann so, dass wenn die Farbe im Bild vorkommt, sagt er mir ist wahr und sagt aber gleichzeitig alle 59.000 Pixel seien diese Farbe.

Ich hatte mal einen anderen Versuch vorher gestartet, bei dem ich gesagt hatte vergleiche die beiden arrays

PHP:
<?php

$image='Pinguin.png';
$src = imagecreatefrompng($image);
$size=getimagesize($image);
echo "<img src=Pinguin.png></br>";

$breitex= $size[0]-1;
$hoehey= $size[1]-1;

?></br><?php

$rgb=imagecolorat($src,$breitex,$hoehey);
$rgbarray=imagecolorsforindex($src,$rgb);

echo var_dump($rgbarray);

?></br><?php

$vergleichx= 123;
$vergleichy= 112;

$vergleichrgb=imagecolorat($src,$vergleichx,$vergleichy);
$vergleicharray=imagecolorsforindex($src,$vergleichrgb);

for($b=0;$b<=$breitex;$b++)
{
	for($h=0;$h<=$hoehey;$h++)
	{
		$schleifergb=imagecolorat($src,$b,$h);
		$schleifearray=imagecolorsforindex($src,$schleifergb);
		
		if(var_dump(array_diff($schleifearray,$vergleicharray))==0)
		{
			echo Passt;
		}?></br><?php
	}
}

Das hat auch meiner Meinung nach gepasst, solang ich diesen Vergleich ausserhalb der forschleife gemacht habe.

Ich komm irgendwie nicht dahinter, wie ich da wo was anbringen muss, falsch mache. Habe soviel gegooglet und soviele verschiedene Varianten mal ausprobiert aber es will nicht =( .
 
Dein erstes Script sah doch schon ganz gut aus.
Wenn du es so abänderst kannst du ein Array erstellen mit den Farbschlüsseln als Index und dem Wert als Anzahl der vorkommenden Farben.
PHP:
$colIndex=array();
for($b=0;$b<=$breitex;$b++){
    for($h=0;$h<=$hoehey;$h++){
        $tmp=imagecolorat($src,$b,$h);
        if(isset($colIndex[$tmp]))$colIndex[$tmp]++;
        else $colIndex[$tmp]=1;
        }
    }
}

Danach suchst du nach deiner Farbe und frägst aus dem Array die Anzahl ab.

Gruß Napofis
 
Zurück