extract color image
php-script om de kleuren van een plaatje uit te lezen

home | index | menu | help

Er is geen CSS ondersteuning.

		
		

extract kleur

      kleur code
 181818
 c0c0c0
 d8c0a8
 786048
 303030
 a89078
 604848
 d8d8d8
 a8a8a8
 c0a890
 907860
 909090
 787878
 909030
 606018
 a8a848
 c0c048
 f0f0d8
		
		

Deze procedure geeft de kleurwaarde(n) die in een plaatje voorkomen. geef de variabele $plaatje de waarde (naam) van een image; en dat is dat. Hieronder staat de broncode van de gehele pagina. Als je de extract color procedure op jouw website wilt gebruiken hoef je alleen maar de code te copy/paste(n).

<?php
class gemiddelde_kleur{
var $test_breedte=100;
var $test_hoogte=100;
var $foutje;
function haal_de_kleur($img,$aantal=20,$helder_minder=true,$verloop_minder=true,$delta=16 ){
	if (is_readable($img)){
		if($delta>2){
			$halve_delta=$delta/2-1;}
		else{
			$halve_delta=0;}
			$afmeting=GetImageSize($img);
			$schaal=1;
			if($afmeting[0]>0)
			$schaal=min($this->test_breedte/$afmeting[0],$this->test_hoogte/$afmeting[1]);
			if ($schaal<1){
				$fix_breedte=floor($schaal*$afmeting[0]);
				$fix_hoogte=floor($schaal*$afmeting[1]);}
			else{
				$fix_breedte=$afmeting[0];
				$fix_hoogte=$afmeting[1];}
			$image_resized=imagecreatetruecolor($fix_breedte,$fix_hoogte);
			if($afmeting[2]==1)
			$image_orig=imagecreatefromgif($img);
			if($afmeting[2]==2)
			$image_orig=imagecreatefromjpeg($img);
			if($afmeting[2]==3)
			$image_orig=imagecreatefrompng($img);
			imagecopyresampled($image_resized, $image_orig,0,0,0,0,$fix_breedte,$fix_hoogte,$afmeting[0],$afmeting[1]);
			$im=$image_resized;
			$imgWidth=imagesx($im);
			$imgHeight=imagesy($im);
			$tel_alle_pixels=0;
			for ($y=0;$y<$imgHeight;$y++){
				for ($x=0;$x<$imgWidth;$x++){
					$tel_alle_pixels++;
					$index=imagecolorat($im,$x,$y);
					$colors=imagecolorsforindex($im,$index);
					if($delta>1){
						$colors['red']=intval((($colors['red'])+$halve_delta)/$delta)*$delta;
						$colors['green']=intval((($colors['green'])+$halve_delta)/$delta)*$delta;
						$colors['blue']=intval((($colors['blue'])+$halve_delta)/$delta)*$delta;
						if($colors['red']>= 256){
							$colors['red']= 255;}
						if($colors['green']>=256){
							$colors['green']=255;}
						if($colors['blue']>= 256){
							$colors['blue']=255;}}
					$heks=substr("0".dechex($colors['red']),-2).substr("0".dechex($colors['green']),-2).substr("0".dechex($colors['blue']),-2);
					if(!isset($heksarray[$heks])){
						$heksarray[$heks]=1;}
					else{
						$heksarray[$heks]++;}}}
			if($verloop_minder){
				arsort(&$heksarray,SORT_NUMERIC);
				$gradients=array();
				foreach($heksarray as $heks => $num){
					if( ! isset($gradients[$heks])){
						$nieuwe_heks = $this->_vind_ernaast( $heks, $gradients, $delta );
						$gradients[$heks]=$nieuwe_heks;}
					else{
						$nieuwe_heks=$gradients[$heks];}
					if($heks!=$nieuwe_heks){
						$heksarray[$heks]=0;
						$heksarray[$nieuwe_heks]+= $num;}}}
			if($helder_minder){
				arsort( &$heksarray,SORT_NUMERIC);
				$de_helderheid=array();
				foreach ($heksarray as $heks => $num){
					if(!isset($de_helderheid[$heks])){
						$nieuwe_heks=$this->_egaliseer($heks,$de_helderheid,$delta );
						$de_helderheid[$heks]=$nieuwe_heks;}
					else{
						$nieuwe_heks=$de_helderheid[$heks];}
					if($heks!=$nieuwe_heks){
						$heksarray[$heks]=0;
						$heksarray[$nieuwe_heks]+=$num;}}}
			arsort(&$heksarray,SORT_NUMERIC );
			foreach($heksarray as $key => $value){
				$heksarray[$key]=(float)$value/$tel_alle_pixels;}
			if($aantal>0){
				$arr=array();
				foreach($heksarray as $key => $value){
					if($aantal==0){
						break;}
					$aantal--;
					$arr[$key]=$value;}
				return $arr;}
			else{
				return $heksarray;}}
		else{
			$this->foutje="Image ".$img." : kan ik niet inlezen";
			return false;}}
	function _egaliseer($heks,$heksarray,$delta ){
		$lowest=255;
		$highest=0;
		$colors['red']=hexdec(substr($heks,0,2));
		$colors['green']=hexdec(substr($heks,2,2));
		$colors['blue']=hexdec(substr($heks,4,2));
		if($colors['red']< $lowest){$lowest=$colors['red'];}
		if($colors['green']< $lowest){$lowest=$colors['green'];}
		if($colors['blue']< $lowest){$lowest=$colors['blue'];}
		if($colors['red']> $highest){$highest=$colors['red'];}
		if($colors['green']> $highest){$highest=$colors['green'];}
		if($colors['blue']> $highest){$highest=$colors['blue'];}
		if($lowest==$highest ){
			if($delta<=32){
				if($lowest==0||$highest >= (255-$delta)){
					return $heks;}}
			else{
				return $heks;}}
		for(;$highest<256;$lowest+=$delta,$highest+= $delta){
			$nieuwe_heks=substr("0".dechex($colors['red']-$lowest),-2).substr("0".dechex($colors['green']-$lowest),-2).substr("0".dechex($colors['blue']-$lowest),-2);
			if( isset( $heksarray[$nieuwe_heks])){
				return $nieuwe_heks;}}
		return $heks;}
	function _vind_ernaast($heks,$gradients,$delta ){
		$rood=hexdec(substr($heks,0,2));
		$groen=hexdec(substr($heks,2,2));
		$blauw=hexdec(substr($heks,4,2));
		if($rood>$delta){
			$nieuwe_heks=substr("0".dechex($rood-$delta),-2).substr("0".dechex($groen),-2).substr("0".dechex($blauw),-2);
			if(isset($gradients[$nieuwe_heks])){
				return $gradients[$nieuwe_heks];}}
		if($groen>$delta){
			$nieuwe_heks=substr("0".dechex($rood),-2).substr("0".dechex($groen-$delta),-2).substr("0".dechex($blauw),-2);
			if(isset($gradients[$nieuwe_heks])){
				return $gradients[$nieuwe_heks];}}
		if($blauw>$delta){
			$nieuwe_heks=substr("0".dechex($rood),-2).substr("0".dechex($groen),-2).substr("0".dechex($blauw-$delta),-2);
			if(isset($gradients[$nieuwe_heks])){
				return $gradients[$nieuwe_heks];}}
		if($rood<(255-$delta)){
			$nieuwe_heks=substr("0".dechex($rood+$delta),-2).substr("0".dechex($groen),-2).substr("0".dechex($blauw),-2);
			if(isset($gradients[$nieuwe_heks])){
				return $gradients[$nieuwe_heks];}}
		if($groen<(255-$delta)){
			$nieuwe_heks=substr("0".dechex($rood),-2).substr("0".dechex($groen+$delta),-2).substr("0".dechex($blauw),-2);
			if(isset($gradients[$nieuwe_heks])){
				return $gradients[$nieuwe_heks];}}
		if($blauw<(255-$delta)){
			$nieuwe_heks=substr("0".dechex($rood),-2).substr("0".dechex($groen),-2).substr("0".dechex($blauw+$delta),-2);
			if(isset($gradients[$nieuwe_heks])){
				return $gradients[$nieuwe_heks];}}
		return $heks;}}
?>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
		<title>extract color</title>
		<meta name="author" content="Bobik"><meta name="language" content="nederlands"><style type="text/css" media="screen">body{margin-bottom:60em;color:#E5CC92;background:#020;font-family:Helvetica,Geneva,Arial,sans-serif;font-size:16px}a{text-decoration:none;outline:0}img{border:0}.tekst{color:#bbb;background:#040;text-align:center;padding-bottom:0.5em}ul{margin-left:100px;display:block;width:16em;color:#82B282;background:#030;padding:0.3em;list-style-type:none;border-right:1px solid #004000;border-top:1px solid #004000}p{margin-left:100px}p{margin-right:40%}.css-check{display:none}li a{color:#82B282;background:#003300;padding-left:0.5em}li a:hover{color:#E5CC92;background:#003300}.eenlink,.knop,.tekst{color:#aaa;background:#040;padding-left:0.5em;padding-right:0.5em;border-right:1px solid #050;border-top:1px solid #050}.eenlink:hover,.knop:hover{color:#E5CC92;background:#040}.knop{color:#AABD8C;background:#040;font-weight:bold}.groter{font-size:1.4em}.kleiner{font-size:0.7em}.lager{margin-bottom:5em}#logo{color:#436E00;background:#040;position:absolute;right:1.2em;font-weight:bold}</style>
		<style type="text/css">
			table,pre{margin-left:100px}
		</style>
	</head>
	<body>
		<div class="tekst">			
			<div id="logo">www.dns5.nl</div>
			<span class="groter"><strong>extract color image</strong></span><br />
			<span class="kleiner"><strong>php-script om de kleuren van een plaatje uit te lezen</strong></span>
		</div>
		<p class="lager">

			<a href="http://www.dns5.nl/" rel="nofollow" title=" hoofd pagina "><span class="knop">home</span></a> | 
			<a href="http://www.dns5.nl/site-index.php" rel="nofollow" title=" site-index "><span class="knop">index</span></a> | 
			<a href="http://www.dns5.nl/alle-scripts-en-code.html" rel="nofollow" title=" hoofd-menu "><span class="knop">menu</span></a> | 
			<a href="http://www.dns5.nl/help.html" rel="nofollow" title=" help "><span class="knop">help</span></a>
		</p>
		<p class="css-check">Er is geen CSS ondersteuning.</p>

		<noscript>
			<p>Jouw javascript is uitgeschakeld. Sommige onderdelen van deze site zijn nu niet operationeel.</p>
		</noscript>
		<ul>
			<li><a href="http://www.dns5.nl/php/" title=" php menu ">klik hier voor het php-menu</a></li>
			<li><a href="http://www.dns5.nl/php/programma-code/banner.xml" title=" automatische banners ">klik hier voor het php script</a></li>
		</ul>
		<pre>
		
		</pre>
		<?php
			$plaatje="extract-color.jpg";
			$delta = 24;
			$helder_minder = true;
			$verloop_minder = true;
			$hoeveel_zien = 25;
			$klas=new gemiddelde_kleur();
			$colors=$klas->haal_de_kleur($plaatje, $hoeveel_zien, $helder_minder, $verloop_minder, $delta);
		?>
		<p>
			<img src="<?php echo $plaatje;?>" alt="extract kleur" />
		</p>
		<table>
			<tr><td>     </td><td> </td><td>kleur code</td></tr>
			<?php
			foreach($colors as $heks => $aantal){
				if($aantal>0){echo "<tr><td style=\"background:#".$heks.";color:#000\"></td><td> </td><td>".$heks."</td></tr>";}}
			?>
		</table>
	</body>
</html>		
		

cache 17-02-2011