PHP Dersleri

PHP ile HEX Renk Kodunu RGB’ye Çevirme

Bu dersimizde Hexadecimal renk kodlarını RGB formatına nasıl çevirebileceğimizden bahsedeğim. Hexadecimal değeri RGB’de intager değere çevirmek için hexdec() fonksiyonunu kullanacağız. Bu fonksiyon ile birlikte hexadecimal değeri decimal değere çevirmiş olacağız. Hex değeri Rgb’ye çevirmek için işlemleri adım adım gerçekleştirelim. Böylelikle daha kolay bir şekilde anlaşılacağını düşünüyorum.

İlk olarak RGB’ye çevirilmesini istediğimiz değerde yer alan #(diez) sembolünü kaldırmakla başlayalım.

$hex = "#ff0000";
$hex = str_replace("#", "", $hex);

Yukarıdaki örnekte, $hex değişkeni ile #ff0000 renk kodu gönderilmektedir. Bu renk kodundaki # sembolünü kaldırmak için str_replace() fonksiyonunu kullanıyoruz. Böylece sadece renk kodunu elde etmiş oluyoruz.

Bildiğiniz gibi renk kodları 3’lü yada 6’lı olarak yazılmaktadır. Renk kodunu çevirirkende bu durumu göz önüne alarak işlem yapmak gerekecektir. Gelen renk kodunun kaç karakterden olduğunu hesaplamak için strlen() fonksiyonunu kullanacağız.

if( strlen($hex) == 3 ) {
 // 3 karakterli renk kodları
}else{
 // 6 karakterli renk kodları
}

Yukarıdaki kontrol ifadesinde, strlen() fonksiyonu kullanılarak gelen renk kodunun kaç karakterli olduğu kontrol edilmektedir. Eğer gelen değer üç karakterden oluşuyorsa if alanı çalışacaktır. Eğer değer 3’ten farklı ise -6 oluyor bu- else ifadesi çalışacaktır.

$r = hexdec(substr($hex,0,1).substr($hex,0,1));
$g = hexdec(substr($hex,1,1).substr($hex,1,1));
$b = hexdec(substr($hex,2,1).substr($hex,2,1));

Yukarıdaki kodları if koşulunca çalışacak olan kodlara yazınız. Bu kodlarda substr() fonksiyonu ile üç karakterli renk kodunun birinci, ikinci ve üçüncü değeri alınıp hexdec() fonksiyonu ile dönüşümü sağlanacaktır. Şimdi de bunu ikili karakter için uygulayalım.

$r = hexdec(substr($hex,0,2));
$g = hexdec(substr($hex,2,2));
$b = hexdec(substr($hex,4,2));

Altı karakter olduğunda bu işlem daha da kolaydır. Yapmamız gereken tek şey substr() fonksiyonu ile değerleri ikişer ikişer olarak almak olacaktır. Son olarakta hazırlanan değerleri diziye aktararak sonuç elde edeceğiz.

$rgb = array($r, $g, $b);

Tüm işlemler sonrasında array ile renk kodlarını toparlamış oluyoruz. Çıktı için print_r() ile $rgb yazdırarak sonuca ulaşabilirsiniz. Örnekte girmiş olduğumuz #ff0000 değerinin çıktısı da Array ( [0] => 255 [1] => 0 [2] => 0 ) olacaktır.

<?php
function rgbCevir($hex) {
   // # işaretini kaldırıyoruz.
   $hex = str_replace("#", "", $hex);
   // 3 karakter ise
   if(strlen($hex) == 3) {
      $r = hexdec(substr($hex,0,1).substr($hex,0,1));
      $g = hexdec(substr($hex,1,1).substr($hex,1,1));
      $b = hexdec(substr($hex,2,1).substr($hex,2,1));
   }else{ // 6 karakter ise
      $r = hexdec(substr($hex,0,2));
      $g = hexdec(substr($hex,2,2));
      $b = hexdec(substr($hex,4,2));
   }
   // toparlıyoruz.
   $rgb = array($r, $g, $b);
   return $rgb;
}
$rgb = rgbCevir("#ff0000");
print_r($rgb);
// Sonuç : Array ( [0] => 255 [1] => 0 [2] => 0 )
?>

Ders alanında yer alan kodları da bir fonksiyon altında toparlayarak her yerde kullanıma açık bir duruma getirmiş oluyoruz. Fonksiyonun sonucu dizi(array) olarak döndürülecektir.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir