Please see my updated post:
Convert RGB(A) output to Hex Color
My current project uses Farbtastic which is a fantastic jQuery plugin which allows users to visually choose a color for an element. The problem I ran into was loading a default color from the element:
jQuery returns the element color in RGB format
document.write( $('#myElement').css('background-color') ); // outputs: rgb(34, 34, 34)
but Farbtastic uses the hex color format, just like the CSS.
I found this really nice script (by R0bb13) which converts RGB to hex. This script requires the input variable to be in an array "[34,34,34]". In order to make the script use an RGB format "rgb(34,34,34)", I had to add one line to the script to remove the "rgb" and parenthesis and then convert (split) the result into an array...#myElement { background-color: #222222 }
Update #2 (allows entering an rgba value - opacity is ignored)
Updated (removing internal function):
Here is an example of how to use this code with jQuery://Function to convert hex format to a rgb color function rgb2hex(orig){ var rgb = orig.replace(/\s/g,'').match(/^rgba?\((\d+),(\d+),(\d+)/i); return (rgb && rgb.length === 4) ? "#" + ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) + ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) + ("0" + parseInt(rgb[3],10).toString(16)).slice(-2) : orig; }
Here is the original code from this post (not nearly as efficient as the updated script):document.write( rgb2hex($('#myElement').css('background-color')) ); // outputs: #222222
//Function to convert hex format to a rgb color function rgb2hex(rgb) { var hexDigits = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]; rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); function hex(x) { return isNaN(x) ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16]; } return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]); }
thanks
ReplyDeletethank you so much :)
ReplyDeletethis made my day
I've added an alternative method that doesn't require an array, *smack head* just use the built in functions (duh LOL)
ReplyDeleteNice one motty, great post! Would you consider writing some jQuery posts for my blog? http://jquery4u.com obviously will be some incentives. Cheers. Sam
ReplyDeleteJust for info !
ReplyDeleteThis script breaks awfully when encountering a css3 rgba string !
rgba(0,0,0,0)
http://www.zenelements.com/blog/css3-rgb-rgba-color-opacity/
Thanks Kim! I modified the script a bit, here is a demo.
ReplyDeleteyeeesssss, excellent and simple
ReplyDeleteThank you! Worked like a charm here!
ReplyDeleteRGB Color filters
ReplyDelete