Script conta colori

lugalzaggesi

Nuovo Utente
1 Apr 2014
11
0
3
Ciao a tutti!
Ho trovato uno script che mi permette di contare i colore di una foto ed individuare il numero dei pixel associati al colore.... ho provato ad aggiustarlo... ma mi individui i colori in modo errato... mi potete aiutare? e vedere dove si trova l'errore...?
grazie:quote:
PHP:
    <?php
		
        echo "Dimensioni Immagine (px)";
		echo "<BR><BR>";
        
		list($width, $height, $type, $attr) = getimagesize("calcio.jpg");

		echo "Image width: " .$width. " px";
		echo "<BR>";
		echo "Image height: " .$height. " px";
		echo "<BR>";
		echo "Image type: " .$type;
		echo "<BR>";
		echo "Attribute: " .$attr;
        
        
        echo "<BR><BR>";
        echo "Colori Immagine";
		echo "<BR><BR>";


		$img = "calcio.jpg";
		$palette = detectColors($img);
        $contaColori = countColors($img,$palette);
		echo '<img src="' . $img . '" />';
		echo '<table>'; 
        
        for($i=0;$i<count($palette);$i++){
        
        	echo '<tr><td style="background:#' . $palette[$i] . '; width:36px;"></td><td>#' . $palette[$i] . ' : ' . $contaColori[$i] . ' px</td></tr>';
            
        }
        
        
		echo '</table>';
        
        
        
        
        
        function detectColors($image) {
  			
  			$palette = array();
  			$size = getimagesize($image);
            
  			if(!$size) {
    			return FALSE;
  			}
            
  			switch($size['mime']) {
    			case 'image/jpeg':
      				$img = imagecreatefromjpeg($image);
      				break;
    			case 'image/png':
      				$img = imagecreatefrompng($image);
      				break;
    			case 'image/gif':
      				$img = imagecreatefromgif($image);
      				break;
    			default:
      				return FALSE;
  			}
        
  			if(!$img) {
    			return FALSE;
  			}
            
  			for($i = 0; $i < $size[0]; $i++) {
    			for($j = 0; $j < $size[1]; $j++) {
      				$thisColor = imagecolorat($img, $i, $j);
      				$rgb = imagecolorsforindex($img, $thisColor); 
      				$color = sprintf('%02X%02X%02X', (round(round(($rgb['red'] / 0x33)) * 0x33)), round(round(($rgb['green'] / 0x33)) * 0x33), round(round(($rgb['blue'] / 0x33)) * 0x33));
      				$palette[$color] = isset($palette[$color]) ? ++$palette[$color] : 1;
                    
    			}
  			}
            
  			arsort($palette);
            
  		return array_slice(array_keys($palette), 0);
		}
        
        
        
        
        function countColors($image,$arrayColori) {
        
  			$conteggioColori = array();
  			$size = getimagesize($image);
            
  			if(!$size) {
    			return FALSE;
  			}
            
  			switch($size['mime']) {
    			case 'image/jpeg':
      				$img = imagecreatefromjpeg($image);
      				break;
    			case 'image/png':
      				$img = imagecreatefrompng($image);
      				break;
    			case 'image/gif':
      				$img = imagecreatefromgif($image);
      				break;
    			default:
      				return FALSE;
  			}
        
  			if(!$img) {
    			return FALSE;
  			}
            
            $lunghezzaVettore = count($arrayColori);
            $conta=0;
            
            for($c = 0;$c < $lunghezzaVettore; $c++){
            	$conta=0;
  				for($i = 0; $i < $size[0]; $i++) {
    				for($j = 0; $j < $size[1]; $j++) {
                
                
      					$thisColor = imagecolorat($img, $i, $j);
      					$rgb = imagecolorsforindex($img, $thisColor); 
      					$color = sprintf('%02X%02X%02X', (round(round(($rgb['red'] / 0x33)) * 0x33)), round(round(($rgb['green'] / 0x33)) * 0x33), round(round(($rgb['blue'] / 0x33)) * 0x33));
      					
                        if($palette[$c] == $color){
                        	$conta+=1;
                        }
                        
                    
    				}
                    
  				}
                
                $conteggioColori[$c] = $conta;
                
                
             }
  		return array_slice(array_keys($conteggioColori), 0);
        
        
        }

?>
 

Discussioni simili