Resim renk yoğunluğu bulmanıza yarayan basit bir script.Tarafımdan yazılmıştır.
Geliştirip, resim tanımlama işlemlerinizde kullanabilirsiniz.
Bu haliyle fikir vermesi açısından paylaşılmıştır.Benzer renkler vs. ayıklaması size kalmış, dediğim gibi bu temel açısından, fikir vermesi maksadıyla yazılmıştır.
$resimYolu değişkeninden, kullanılacak resimin seçilmesi yeterlidir.
Örnek bir çıktı: (r10 logosu üzerinde denenmiştir.)
Kaynak kod:
<?php
///////////////////////////////////////////////////
/////////Bu yazılım, jpeg formatlı dosyaların /////
//////// renk yogunlugunu bulmamızı saglar.////////
///////////////////////////////////////////////////
$depo=array();
if(isset($_GET['minikare'])) {
$gel=$_GET['minikare'];
$parcalabehcet=explode('_',$gel);
$ki=$parcalabehcet[0];
$ye=$parcalabehcet[1];
$ma=$parcalabehcet[2];
$kare=imagecreate(10,10);
imagefill($kare,0,0,imagecolorallocate($kare,$ki,$ye,$ma));
imagesetthickness($kare, 1);
imagerectangle($kare,0,0,9,9,imagecolorallocate($kare,0,0,0));
header('Content-type:image/jpeg');
imagejpeg($kare);
exit;
}
$resimYolu="r10.jpg";
//Resimi açalım
$resim=imagecreatefromjpeg($resimYolu);
$en=imagesx($resim);
$boy=imagesy($resim);
for($x=0;$x<$en;$x++) {
for($y=0;$y<$boy;$y++) {
$px=imagecolorat($resim,$x,$y);
$ki=($px & 0xFF0000) >> 16;
$ye=($px & 0x00FF00) >> 8;
$ma=($px & 0x0000FF);
$kiyema=$ki.'_'.$ye.'_'.$ma;
if(isset($depo[$kiyema])) $depo[$kiyema]+=1;
else $depo[$kiyema]=1;
}
}
$toplamtespit=array_sum($depo);
arsort($depo);
?>
<h1>Resim yoğunluğu inceleme</h1>
<h3> İncelenen resim: </h3>
<img src="<?php echo $resimYolu; ?>">
<br><br>
<h2>En çok rastlanan 10 renk </h2>
<?php
$lis=0;
foreach($depo as $renk=> $rastlanma) {
$bolgec=explode('_',$renk);
if(strlen(dechex($bolgec[0]))<2) $hex1='0'.dechex($bolgec[0]); else $hex1=dechex($bolgec[0]);
if(strlen(dechex($bolgec[1]))<2) $hex2='0'.dechex($bolgec[1]); else $hex2=dechex($bolgec[1]);
if(strlen(dechex($bolgec[2]))<2) $hex3='0'.dechex($bolgec[2]); else $hex3=dechex($bolgec[2]);
$tumhex='<b>'.strtoupper($hex1.$hex2.$hex3).'</b>';
$rastlanmaorani=(100/$toplamtespit)*$rastlanma;
echo ($lis+1).'. renk, <img src="?minikare='.$renk.'"> rgb değeri: <b>'.str_replace('_',' ',$renk).'</b>. Hexadecimal değeri:
'.$tumhex.'.Rastlanma oranı: <b>%'.$rastlanmaorani.'</b><br>';
if($lis==9) break;
$lis++;
}
?>