- Bu konu boş.
-
YazarYazılar
-
05 Nisan 2011: 12:20 #6679eozdeniz1907Ziyaretçi
HTML’de kullanılan ve 16’lık sistemde ifade edilen renk kodlarını 10’luk sisteme çevirebilen ve tersi işlemi gerçekleştirebilen bir php programı konusunda yardımcı olur musunuz ?
06 Nisan 2011: 10:27 #8856AnonimZiyaretçiŞimdi önce mantığını ele alalım:
16’lık renk kodu sisteminde A=10, B=11, C=12, D=13, E=14 ve F=15Şimdi #FFFFFF kodunu nasıl 255, 255, 255 formatına çeviren bir fonksiyon hazırlayalım:
function hexToRGB($hex){
// Önce bütün karakterleri parçalayalım
$her_harf = str_split($hex);
foreach($her_harf AS $key=>$value){
if($value==“F” || $value==“f”) $her_harf[$key]=15;
elseif($value==“E” || $value==“e”) $her_harf[$key]=14;
elseif($value==“D” || $value==“d”) $her_harf[$key]=13;
elseif($value==“C” || $value==“c”) $her_harf[$key]=12;
elseif($value==“B” || $value==“b”) $her_harf[$key]=11;
elseif($value==“A” || $value==“a”) $her_harf[$key]=10;
}
$r = ($her_harf[0]*16)+$her_harf[1];
$g = ($her_harf[2]*16)+$her_harf[3];
$b = ($her_harf[4]*16)+$her_harf[5];
return “RGB: R= {$r} G= {$g} B= {$b};
}
Bu fonksiyon #FFFFFF hexadecimal renk kodunuzu yani 16’lık sistemdeki renk kodunuzu RGB yani 10’luk sisteme çevirir ve size RGB: R=255 G=255 B=255 şeklinde bir çıktı verir.. Ben kütüphaneme ekleyeyim bunu :) Bana da lazım olabiliyor bazen iyi oldu böyle birşey yazdığım :DHatta portalda makale olarak da ekliyorum :)[code=php:3eqk3smv]function hexToRGB($hex){
// Önce bütün karakterleri parçalayalım
$her_harf = str_split($hex);
foreach($her_harf AS $key=>$value){
if($value==“F” || $value==“f”) $her_harf[$key]=15;
elseif($value==“E” || $value==“e”) $her_harf[$key]=14;
elseif($value==“D” || $value==“d”) $her_harf[$key]=13;
elseif($value==“C” || $value==“c”) $her_harf[$key]=12;
elseif($value==“B” || $value==“b”) $her_harf[$key]=11;
elseif($value==“A” || $value==“a”) $her_harf[$key]=10;
}
$r = ($her_harf[0]*16)+$her_harf[1];
$g = ($her_harf[2]*16)+$her_harf[3];
$b = ($her_harf[4]*16)+$her_harf[5];
return “RGB: R= {$r} G= {$g} B= {$b};
}
Bu fonksiyon #FFFFFF hexadecimal renk kodunuzu yani 16’lık sistemdeki renk kodunuzu RGB yani 10’luk sisteme çevirir ve size RGB: R=255 G=255 B=255 şeklinde bir çıktı verir.. Ben kütüphaneme ekleyeyim bunu :) Bana da lazım olabiliyor bazen iyi oldu böyle birşey yazdığım :DHatta portalda makale olarak da ekliyorum :)
06 Nisan 2011: 10:56 #8857AnonimZiyaretçiBurada mantığını da anlattım işin: http://www.trkodlama.com/hexadecimal-renk-kodunu-rgb-formatina-cevirme-355.html
06 Nisan 2011: 18:01 #8858AnonimZiyaretçiBana şöyle bir şey lazım aslında :
Sayfa ilk açıldığında hem 16’lık renk kodunun girilebileceği bir bölüm hem de R-G-B kodlarının 10’luk sistemde girilebileceği bir bölüm yapmam gerekiyor.Her iki bölümün yanında dönüştür butonu olması gerekiyor.Sonuş ekranında da hangi renge dönüşüm yapılacaksa o ren 50×50 şeklinde arkaplan olması gerekiyor.07 Nisan 2011: 06:41 #8859AnonimZiyaretçiDediğini bende düşündüm ama 10’luk RGB’yi nasıl işleyeceğimi bilemedim.. Yani 255 değerini PHP’yi bırak normalde nasıl (x*16)+y=255 0<=x<=15, 0<=y<=15 denklemini çözeceğimi bilemedim.. Bu biraz daha zor..
07 Nisan 2011: 06:47 #8860AnonimZiyaretçio noktada dechex() diye bir fonksiyon varmış.. Senin girdiğin sayısal ifadeyi otomatik olarak hexadecimal formata çeviriyor.. O zaman senin dediğin diğer metodu da şu fonsiyon ile yapabilirsin. RGB’yi formdan 255,90,54 formatından girilmesi gerekiyor
function RGBToHex($rgb){
$parcala=explode(“,”, $rgb);
$ilk=dechex($parcala[0]);
$orta=dechex($parcala[1]);
$son=dechex($parcala[2]);
$ilk = (strlen($ilk) < 2?‘0’:”).$parcala[0];
$orta = (strlen($orta) < 2?‘0’:”).$parcala[1];
$son = (strlen($son) < 2?‘0’:”).$parcala[2];
$hex=“#”.$ilk.$orta.$son;return $hex;
}
Kolay gelsin[code=php:14l45szs]function RGBToHex($rgb){
$parcala=explode(“,”, $rgb);
$ilk=dechex($parcala[0]);
$orta=dechex($parcala[1]);
$son=dechex($parcala[2]);
$ilk = (strlen($ilk) < 2?‘0’:”).$parcala[0];
$orta = (strlen($orta) < 2?‘0’:”).$parcala[1];
$son = (strlen($son) < 2?‘0’:”).$parcala[2];
$hex=“#”.$ilk.$orta.$son;return $hex;
}
Kolay gelsin07 Nisan 2011: 11:04 #8861AnonimZiyaretçihttp://www.erenet.info/hex_rgb_renk_kodu_cevirici.php bu sitedekine benzer birşey yapmam gerekiyor.Ayrıca tek sayfa olucak.Sanırım bu sitedeki kodları incelemem lazım ama bir fikrin var mı nasıl yapıcağım konusunda ?
07 Nisan 2011: 11:24 #8862AnonimZiyaretçiO sayfada javascript ile yapılmış.. Boş bir html sayfa oluştur ve içine aşağıdaki kodu yaz:
<!-- Begin
function NumToHex(num1,num2) {
strNum=document.forms[0].elements[num1].value;
for(i = 0; i < strNum.length; i++) {
chr=strNum.substring(i, i + 1);
if((isNaN(chr))||(chr == ' ')) {
alert('You must enter a digit between 0 and 9!');
document.forms[0].elements[num1].select();
document.forms[0].elements[num2].value='';
return false;
}
}
if(strNum > 255) {
alert('You must enter a number between 0 and 255!');
document.forms[0].elements[num1].select();
document.forms[0].elements[num2].value='';
return false;
}
else {
base = strNum / 16;
rem = strNum % 16;
base = base - (rem / 16);
baseS = MakeHex(base);
remS = MakeHex(rem);
document.forms[0].elements[num2].value=baseS + '' + remS;
ChangeBackground(3, 4, 5);
return true;
}
}
function MakeHex(x) {
if((x >= 0) && (x <= 9))
return x;
else {
switch(x) {
case 10: return "A";
case 11: return "B";
case 12: return "C";
case 13: return "D";
case 14: return "E";
case 15: return "F";
}
}
}
function HexToNum(num1,num2) {
numberS = document.forms[0].elements[num1].value;
tens = MakeNum(numberS.substring(0,1));
if(tens == 'X') {
document.forms[0].elements[num1].select();
document.forms[0].elements[num2].value='';
return false;
}
ones = 0;
if(numberS.length > 1) // means two characters entered
ones=MakeNum(numberS.substring(1,2));
if(ones == 'X') {
document.forms[0].elements[num1].select();
document.forms[0].elements[num2].value='';
return false;
}
document.forms[0].elements[num2].value = (tens * 16) + (ones * 1);
document.forms[0].elements[num1].value = document.forms[0].elements[num1].value.toUpperCase();
ChangeBackground(3, 4, 5);
return true;
}
function MakeNum(str) {
if((str >= 0) && (str <= 9))
return str;
switch(str.toUpperCase()) {
case "A": return 10;
case "B": return 11;
case "C": return 12;
case "D": return 13;
case "E": return 14;
case "F": return 15;
default: alert('You must choose a number between 0 and 9 or a letter between A and F!');
return 'X';
}
}
function ChangeBackground(num1, num2, num3) {
document.bgColor = '#'+document.forms[0].elements[num1].value + document.forms[0].elements[num2].value + document.forms[0].elements[num3].value;
}
// End -->
07 Nisan 2011: 16:08 #8863AnonimZiyaretçifunction taban10($sayi)
{
$sayi=strrev($sayi);
$basamak=strlen($sayi);
for($b=0; $b<$basamak; $b++)
{
$hex[]=substr($sayi,$b,1);
}
for($i=$basamak-1; $i>=0; $i--)
{
switch($hex[$i]){
case 'A': $hex[$i]=10; break;
case 'B': $hex[$i]=11; break;
case 'C': $hex[$i]=12; break;
case 'D': $hex[$i]=13; break;
case 'E': $hex[$i]=14; break;
case 'F': $hex[$i]=15; break;
default : $hex[$i]=$hex[$i];
}
if($i==0)
{
$toplam+=$hex[$i];
}
elseif($i==1)
{
$toplam+=($hex[$i]*16);
}
else
{
for($a=0; $a<$i-1; $a++)
{
if(!isset($aratoplam)){$aratoplam=$hex[$i]*16;}
$aratoplam*=16;
}
if(!isset($toplam)){$toplam=0;}
$toplam+=$aratoplam;
unset($aratoplam);
}
}
return $toplam;
}
//kullanım
echo taban10("FFFFFF"); //çıktısı 16777215function taban16($sayi)
{
for($i=$sayi; $i>=16; $i=$i/16)
{
$kalan[]=$i%16;
}
if($i<16)
{
$kalan[]=$i%16;
}
$say=count($kalan);
$sonuc="";
for($a=$say-1; $a>=0; $a--)
{
switch($kalan[$a]){
case '10': $kalan[$a]='A'; break;
case '11': $kalan[$a]='B'; break;
case '12': $kalan[$a]='C'; break;
case '13': $kalan[$a]='D'; break;
case '14': $kalan[$a]='E'; break;
case '15': $kalan[$a]='F'; break;
default : $kalan[$a]=$kalan[$a];
}
$sonuc.=$kalan[$a];
}
return $sonuc;
}
// kullanım
echo taban16(16777215);//çıktısı FFFFFFecho '
açık renkler';Bu kodları çalıştıramadım nerede hata yapıyorum ?
-
YazarYazılar
- Bu konuyu yanıtlamak için giriş yapmış olmalısınız.