Quick Links: Download Gideros Studio | Gideros Documentation | Gideros Development Center | Gideros community chat | DONATE
Help with Color Coordinates please — Gideros Forum

#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

# Help with Color Coordinates please

Member
edited September 2019
-I have an RGB image size (306 * 48)
-I have an image (can be any size)

I have a color picker, when I pick a color on the image I would like to get its x position on the RGB image.
I have been trying everything that came to my mind but did not succeed.

Do you know a formula to do it?

Thank you in advance for your help.
 ```function SlideColorPicker:setHue(xhexcolor) --self.colors = {0xFF0000, 0xFFFF00, 0x00FF00, 0x00FFFF, 0x0000FF, 0xFF00FF, 0xFF0000} self.e = Event.new("COLOR_CHANGED") local r, g, b = self:hex2rgb(xhexcolor) self.currColor = r*65536 + g*256 + b local hpr = (1 - (r / 255)) * 51 -- 51 is image width 306 / 6 (#self.colors{} - 1) local hpg = (1 - (g / 255)) * 51 local hpb = (1 - (b / 255)) * 51 local hueposition = hpr + hpg + hpb self.hueArrows:setX(hueposition) self.e.color = self.currColor self:dispatchEvent(self.e) end```
my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
Tagged:

• Member
edited September 2019 Accepted Answer
 `function rgb(r, g, b) return ((r*256)+g)*256+b end`
 ```function Util:hex2rgb(hex) hex = hex:gsub("#","") return tonumber("0x"..hex:sub(1,2)), tonumber("0x"..hex:sub(3,4)), tonumber("0x"..hex:sub(5,6)) end```

Likes: MoKaLux

my games:
мій блог по гідерос https://simartinfo.blogspot.com
Слава Україні!
+1 -1 (+1 / -0 )Share on Facebook
• Member
it seems your color slider goes linearly from H0 S50 L50 to H359 S50 L50
see
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Colors/Color_picker_tool
so you need only to convert the rgb of the pixel to hsl first
e.g.
https://www.rapidtables.com/convert/color/rgb-to-hsl.html
and then you can easily get the right place on the color slider. of course only if the color is present there, i.e., has S50 and L50. otherwise you can get the closest color by caring only about the H value.

Likes: MoKaLux

+1 -1 (+1 / -0 )Share on Facebook
• Member
edited September 2019
Thank you for your kind help. I am getting close:
 ``` local r, g, b = self:hex2rgb(xhexcolor) local h, s, l = self:rgb2hsl(r, g, b)```
I now have the h value (between 0 and 360).
One problem is left I cannot figure out how to transform this h value to translate to my image (306 pixel wide).

edit: I think I get it: local hueposition = h * (306 / 360)

Wonderful thank you very much guys.
my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
• Member
yes, although probably
local hueposition = h * (305 / 359)
is even more correct (assuming your colorslider has width 306)

Likes: MoKaLux

+1 -1 (+1 / -0 )Share on Facebook
• Member
@keszegh thank you our gfx specialist thank you @oleg really appreciated!

Likes: keszegh

my growING GIDEROS github repositories: https://github.com/mokalux?tab=repositories
+1 -1 (+1 / -0 )Share on Facebook
• Member
edited September 2019 Accepted Answer
I prefer to use this:
 ```function rgbToHex(r, g, b) return (r << 16) + (g << 8) + b end   function hexToRGB(hex) local r = hex >> 16 local g = hex >> 8 & 0xFF local b = hex & 0xFF return r,g,b end```
And if you want to print/display hex number, just use
 `string.format("0x%06x", hex)`

Likes: Apollo14, oleg

+1 -1 (+2 / -0 )Share on Facebook