Hoşgeldiniz
Okuma Moduna Geç
13 Eylül 2017 - 20:42
PHP ile Otomatik Renk Koyulaştırma İşlemi (RGB to HEX ve HEX to RGB)

Aldığım bir soru üzerine hazırlamak istediğim bu makalemizin amacı elde bulunan bir hex renk kodunu (örneğin: #ff0000) nasıl otomatik olarak koyultabileceğimizi öğreneceğiz. Bunun için temel RGB değerini iyi bilmeli ve hangi değerine neye etki ettiğini görmeliyiz.

 

RGB Nedir?

RGB (red, green, blue), temel renkleri temsil etmektedir. 3 temel renk olan kırmızı, yeşil ve mavi renklerinden oluşur ve diğer tüm renkleri içinde barındırabilir. RGB değerleri her renk için farklıdır. Örneğin düz beyaz bir renk için rgb değeri 255,255,255 iken saf kırmızının renk kodu 255,0,0 olarak bilinir.

RGB Yön Mantığı Nedir?

Öncelikle bunun daha önce nasıl ifade edilerek anlatıldığı hakkında bir fikrim yok. Fakat hangi değerin hangi yönü temsil ettiğini sizlere anlatmalıyım ki konumuzu net olarak işleyebilelim.

Bu 3 Görselden Çıkartılacak Sonuç;

RED (R): R değeri arttıkça çarpraz bir şekilde yukarıya ilerliyor. Açı olarak benim ölçümüme göre 53.6 derecelik bir açı ile ilerliyor.

GREEN (G): G değeri arttıkça sağ alandaki bar yukarı doğru gidiyor gibi gözüküyor.

BLUE (B): B değeri arttıkça sağ alandaki bar aşağı doğru gidiyor gibi gözüküyor.

DETAYLAR (ÖNEMLİ)

Fakat burada bir detay var. Öncelikle örnek üzerinden gidelim. Diyelim ki biz 130,100,70 değerlerini aldık ve 70 değerini arttırmaya başladık. Bu esnada 70 değeri 130 değerinden küçük olduğu her sahne için bar aşağı doğru gitmeye devam edecektir. Ne zaman ki 130 değerini geçerse o zaman üstteki açıyla çarpraz ve sağ üst köşeye doğru hareketine devam edecektir. Eğer biz 100 değeri için bunu düşünseydik yine aynı hesabı yapmamız gerekecekti.

Nerede Kullanabilirim?

Bana gelen soruya göre kullanım amacı belirlemek gerekirse eğer, kullanıcıya panelden renk seçtirdikten sonra hover özelliğine koyulaştırılmış rengi kullanabilirsiniz. Yani kullanıcıya 2 renk seçtirmek yerine (hem normal renk hem hover hali), tek renk seçtirerek sistemin koyu halini otomatik atamasını sağlayabilirsiniz.

Temel Hali İle Kodlanması

Yukarıda anlatılan mantığı anladıktan sonra yapmamız gereken elimizdeki HEX kodunu RGB'ye çevirmek ve akabinde gerekli değerler ile oynamaktır. Aşağıda hazırladığım kod en temel hali ile birkaç denemeden sonra çıkartmış olduğum yapıdır. Önemli olan yapıyı incelemeniz ve kendinize göre geliştirmenizdir.

HEX to RGB

sscanf($hex, "#%02x%02x%02x")

RGB to HEX

'#'.sprintf('%02x', $r).sprintf('%02x', $g).sprintf('%02x', $b);

KOD

list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
$rgb = "(".$r.",".$g.",".$b.")";
if ($r > $g && $r > $b) {
	$r = intval($r-($r/5));
	if($r < 0) {$r = 0;}
	if ($g > $b) {if ($r < $g) {$r = $g;}}
	else {if ($r < $b) {$r = $b;}}
} elseif ($g > $r && $g > $b) {
	$g = intval($g-($g/5));
	if($g < 0) {$g = 0;}
	if ($r > $b) {if ($g < $r) {$g = $r;}}
	else {if ($g < $b) {$r = $b;}}
} elseif ($b > $r && $b > $g) {
	$b = intval($b-($b/10));
	if ($g > $r && $g < $b) {$g = intval($g-($g/10));}
}
$rgb2 = "(".$r.",".$g.",".$b.")";
$hex2 = '#'.sprintf('%02x', $r).sprintf('%02x', $g).sprintf('%02x', $b);

AÇIKLAMA

$hex: İlk girilen HEX değeridir. Akabinde girilen hex değerinin RGB değeri bulunacak ve koyulaştırılan yeni HEX ve RGB değerleri hex2 ve rgb2 değişkenlerine atanacaktır.

intval(): Bir değeri tam sayıya yuvarlıyor. Bunun amacı bölüm sonuçlarından ortaya çıkabilecek aksaklıkları önlemektir.

Uygulama Demosu Uygulamanın Dökümanlarını İndir
Sponsorlu Bağlantı
İlk Yorumu Sen Bırak!
Bu konu hakkında henüz kimse görüş bildirmedi. İlk görüşü sen aktarmak ister misin?
Adınız ve Soyadınız
Mail Adresiniz
Mail adresinizi yalnızca yönetici görüntüleyebilir.
Web Siteniz
Yorumunuz
Yorumu Gönder