Little Goat Posted June 2, 2006 Share Posted June 2, 2006 Hi, this isn't totally about PHP, but anyway, I need to make a color scheme generator. ther is a Javascript one, (google for ColorMatch 5k)but I need one that is very simple; you put in a random hex code (e.g. F24ECC) and it should output some colors that would go with that color well. all of this needs to be in PHP.I either need to know a method of finding matching colors, or I need some code to do it (if that's easier than explaining to me).thnx,LG Link to comment Share on other sites More sharing options...
Little Goat Posted June 3, 2006 Author Share Posted June 3, 2006 no? well then does anyone know of a javascript to php or at least Javascript to ASP that they can direct me to? Link to comment Share on other sites More sharing options...
Jack McKalling Posted June 3, 2006 Share Posted June 3, 2006 But what exactly do you mean with 'matching colors' ? Like colors that don't swear, or colors that are similar to eachother, or whatelse? Link to comment Share on other sites More sharing options...
Little Goat Posted June 3, 2006 Author Share Posted June 3, 2006 I mean colors that would look well together. (for example in a color scheme) if you go to ColorMatch.dk you will see a Javascript one, but I need it in php, and way less advanced. I just want to send a color to a PHP function, and have it return colors that look good with each other.LG Link to comment Share on other sites More sharing options...
Jack McKalling Posted June 3, 2006 Share Posted June 3, 2006 What is the reason why you want such code? I don't want to be difficult, but I don't see the point of having this. Link to comment Share on other sites More sharing options...
skym Posted June 3, 2006 Share Posted June 3, 2006 I guess you only need the algorythm. If colormatch.dk uses javascript, then you can take a look in the code and use the same algorythm in PHP. Link to comment Share on other sites More sharing options...
Little Goat Posted June 3, 2006 Author Share Posted June 3, 2006 @dan I wanted to make something similar to StrangeBanana.com and I need to make a color scheme for the generated pages.@skym, I am trying to do that, but it's kind of hard to sort out the Javascript. it's very complicated, and even if I did get it figured out, I probably still wouldn't know how the algorythm worked. maybe I'll just keep doing that, but I would like it if I could know how the algorythm works. Link to comment Share on other sites More sharing options...
justsomeguy Posted June 4, 2006 Share Posted June 4, 2006 Here is the javascript, formatted with line breaks. But I don't really want to sit here and translate everything into PHP. You could probably email the author, his address is on the page, and either ask him questions about it or he might be able to send you another version of the source with more clear variable and function names. The code was obfuscated because of the contest, not because he doesn't want people to copy his code. var mover=moveg=moveb=moveh=0;var hs=new Object();var rg=new Object();rg.r=rg.g=rg.b=0;function click(x,s){ if (x<10) { x=10 } if (x>265) { x=265 } x-=10; eval("h"+s+".style").left=x+1; eval("rg."+s+"="+x); rg2hs(rg); ud("0",rg); sw.style.backgroundColor="rgb("+rg.r+","+rg.g+","+rg.b+")"; dom();}function bclick(s){ x=window.event.offsetX+eval("h"+s+".style.pixelLeft-1"); click(x,s);}function sc(s){ x=window.event.offsetX;click(x,s);}function movee(s){ eval("move"+s+"=0");}function rc(x,m){ if(x>m) { return m; } if(x<0) { return 0; } else { return x; }}function rg2hs(rg){ m=rg.r; if(rg.g<m) { m=rg.g; } if(rg.b<m) { m=rg.b; } v=rg.r; if(rg.g>v) { v=rg.g; } if(rg.b>v) { v=rg.b; } value=100*v/255; delta=v-m; if(v==0.0) { hs.s=0; } else { hs.s=100*delta/v; } if(hs.s==0) { hs.h=0; } else { if(rg.r==v) { hs.h=60.0*(rg.g-rg.b)/delta; } else if(rg.g==v) { hs.h=120.0+60.0*(rg.b-rg.r)/delta; } else if(rg.b=v) { hs.h=240.0+60.0*(rg.r-rg.g)/delta; } if(hs.h<0.0) { hs.h=hs.h+360.0; } } hs.v=Math.round(value); hs.h=Math.round(hs.h); hs.s=Math.round(hs.s); return(true);}function rg2html(z){ return "#"+d2h(z.r)+d2h(z.g)+d2h(z.b);}function d2h(d){ hch="0123456789ABCDEF"; a=d%16; b=(d-a)/16; return hch.charAt(b)+hch.charAt(a);}function c2r(d){ k=window.event.srcElement.style.backgroundColor; j=(k.substr(4,k.indexOf(")")-4)).split(","); click(parseInt(j[0])+10,"r"); click(parseInt(j[1])+10,"g"); click(parseInt(j[2])+10,"b");}function h2r(hs){ var rg=new Object(); if(hs.s==0) { rg.r=rg.g=rg.b=Math.round(hs.v*2.55); return rg; } hs.s=hs.s/100; hs.v=hs.v/100; hs.h/=60; i=Math.floor(hs.h); f=hs.h-i; p=hs.v*(1-hs.s); q=hs.v*(1-hs.s*f); t=hs.v*(1-hs.s*(1-f)); switch(i) { case 0: rg.r=hs.v; rg.g=t; rg.b=p; break; case 1: rg.r=q; rg.g=hs.v; rg.b=p; break; case 2: rg.r=p; rg.g=hs.v; rg.b=t; break; case 3: rg.r=p; rg.g=q; rg.b=hs.v; break; case 4: rg.r=t; rg.g=p; rg.b=hs.v; break; default: rg.r=hs.v; rg.g=p; rg.b=q; } rg.r=Math.round(rg.r*255); rg.g=Math.round(rg.g*255); rg.b=Math.round(rg.b*255); return rg;}function ps(x){ document.write('<td><div style="width:53;height:53;background-color:rgb(0,0,0);cursor:hand" class=s id="sw'+x+'" onClick="c2r()" title="Click to promote to primary color"></div></td>');}function ph(x){ document.write('<td><div class=t id="hc'+x+'">#000000</div></td>');}function ud(x,c){ eval("sw"+x).style.backgroundColor="rgb("+c.r+","+c.g+","+c.b+")"; eval("hc"+x).innerHTML=rg2html(c);}function pl(t,c,l){ document.write('<div style="position:absolute;left:30;top:'+t+';background-color:black"><div class=s style="width:276;height:21;background-color:'+c+';filter:alpha(style=1,startx=360,finishx=0);" onMouseDown="move'+l+'=1;sc(\''+l+'\');" onMouseMove="if(move'+l+'==1){sc(\''+l+'\');}"></div><div class=s2 id=h'+l+' onMouseDown="move'+l+'=1;bclick(\''+l+'\');" onMouseUp="movee(\''+l+'\');" onMouseMove="if(move'+l+'==1){bclick(\''+l+'\');}"></div></div>');}function dom(){ z=new Object(); y=new Object(); yx=new Object(); y.s=hs.s; y.h=hs.h; if(hs.v>70) { y.v=hs.v-30; } else { y.v=hs.v+30; } z=h2r(y); ud("1",z); if((hs.h>=0)&&(hs.h<30)) { yx.h=y.h=hs.h+20; yx.s=y.s=hs.s; y.v=hs.v; if(hs.v>70) { yx.v=hs.v-30; } else { yx.v=hs.v+30; } } if((hs.h>=30)&&(hs.h<60)) { yx.h=y.h=hs.h+150; y.s=rc(hs.s-30,100); y.v=rc(hs.v-20,100); yx.s=rc(hs.s-70,100); yx.v=rc(hs.v+20,100); } if((hs.h>=60)&&(hs.h<180)) { yx.h=y.h=hs.h-40; y.s=yx.s=hs.s; y.v=hs.v; if(hs.v>70) { yx.v=hs.v-30; } else { yx.v=hs.v+30; } } if((hs.h>=180)&&(hs.h<220)) { yx.h=hs.h-170; y.h=hs.h-160; yx.s=y.s=hs.s; y.v=hs.v; if(hs.v>70) { yx.v=hs.v-30; } else { yx.v=hs.v+30; } } if((hs.h>=220)&&(hs.h<300)) { yx.h=y.h=hs.h; yx.s=y.s=rc(hs.s-60,100); y.v=hs.v; if(hs.v>70) { yx.v=hs.v-30; } else { yx.v=hs.v+30; } } if(hs.h>=300) { if(hs.s>50) { y.s=yx.s=hs.s-40; } else { y.s=yx.s=hs.s+40; } yx.h=y.h=(hs.h+20)%360; y.v=hs.v; if(hs.v>70) { yx.v=hs.v-30; } else { yx.v=hs.v+30; } } z=h2r(y); ud("2",z); z=h2r(yx); ud("3",z); y.h=0; y.s=0; y.v=100-hs.v; z=h2r(y); ud("4",z); y.h=0; y.s=0; y.v=hs.v; z=h2r(y); ud("5",z);} Link to comment Share on other sites More sharing options...
Little Goat Posted June 5, 2006 Author Share Posted June 5, 2006 yea, I got that far, but thanks anyway. I figured out the basics of the code that I need, and I'm just going to use my own algorithm.thanksLG Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now