• 09-09-2010, 15:10:37
    #1
    Eposta Aktivasyonu Gerekmekte
    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++;
    }
    
    ?>
  • 09-09-2010, 15:30:56
    #2
    Başarılı bir çalışma olmuş. Ellerine sağlık diyorum

    Ayrıca, izinin varsa fonksiyonunu boş vaktimde geliştirip kullanım alanını genişletmek istiyorum. GD kütüphanesi mükemmel bir kütüphane
  • 09-09-2010, 16:07:23
    #3
    Eposta Aktivasyonu Gerekmekte
    eagle_one adlı üyeden alıntı: mesajı görüntüle
    Başarılı bir çalışma olmuş. Ellerine sağlık diyorum

    Ayrıca, izinin varsa fonksiyonunu boş vaktimde geliştirip kullanım alanını genişletmek istiyorum. GD kütüphanesi mükemmel bir kütüphane
    Yorumun için teşekkür ederim.
    Ben fonksiyonu fikir vermesi açısından paylaştım.İstediğiniz gibi geliştirip, kullanmak size kalmış.
    Herhangi bir sorunun olursa, bana ulaşabilirsin.
  • 09-09-2010, 23:16:06
    #4
    Üyeliği durduruldu
    Geliştirilmeye açık güzel bir çalışma olmuş, teşekkürler.