Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Futu-block on January 21, 2019, 06:46:36 PM

Title: Convertir hexadecimal a RBG
Post by: Futu-block on January 21, 2019, 06:46:36 PM
Pos eso, necesito convertir los colores de RGB a hexadecimal, mas que nada por el tema de que es mas rápido guardar un #ffcc99 que un 245,45,128
Si no se puede po nada
aunque tambien me gustaría trabajar en 8 bits porque son 256 colores y es todavía mas facil... ¿no? alguna pista? una Url a un tuto o algo, la wiki
Title: Re:Convertir hexadecimal a RBG
Post by: FreeYourMind on January 22, 2019, 07:59:53 AM
seleciona el color en photoshop y mira los valores hexadecimales
Title: Re:Convertir hexadecimal a RBG
Post by: Futu-block on January 22, 2019, 09:31:19 AM
ja ja ja, no hombre, algun algoritmo de conversión
Title: Re:Convertir hexadecimal a RBG
Post by: FreeYourMind on January 22, 2019, 10:18:55 AM
los vas apuntando y al final te creas una tabla de relacion xD
Title: Re:Convertir hexadecimal a RBG
Post by: Futu-block on January 22, 2019, 11:06:56 AM
buf, que trabajoso, chiquillo...

Onde andas? perdío man
-----------------0-------------------
bueno, creo que al final usaré los 8 bits, dejo un .prg tó tosco hecho ajín tó rápido para quien lo necesite tenga una idea de como rula el tema...
(http://forum.bennugd.org/index.php?action=dlattach;topic=4761.0;attach=4155)

Aunque sigo buscando el tema de pasar a hexadecimal porque tiene hasta 16.777.216 combinaciones y eso es muy interesante pero las página web no muestran mas de 216 colores, creo, y mi principal intención va a ser la web, me basta con los 8 bits pero no quiero dejar pasar el algoritmo de conversión
Title: Re:Convertir hexadecimal a RBG
Post by: darío on January 24, 2019, 09:15:17 PM
Si tienes un color ARGB con alpha no premultiplicado y con 8 bits por canal (num de 32bits), el algoritmo es:

alpha = (color >> 24) & 0xFF
R = (color >> 16) & 0xFF
G = (color >> 8) & 0xFF
B = color & 0xFF
>> hace una rotación de bits a la derecha, con lo que pones los 8 bits correspondientes a la componente en el byte menos significante. Luego le applicas un and lógico para sacar únicamente esos bits.Tienes un byte en cada componente. La representación hexadecimal de cada componente es lo que estás buscando.
Title: Re:Convertir hexadecimal a RBG
Post by: gecko on January 24, 2019, 09:58:18 PM
Le dediqué un rato a este problema porque me pareció interesante intentar resolverlo con código BennuGD.

Aunque me quedo algo más complicado de lo que me gustaría, llegué a un punto en el que parece funcionar, así que lo comparto.

https://github.com/TorresBaldi/color-converter

En el main.prg estoy probando con un ejemplo, y el uso quedaría:


// me devuelve "#AF4EA1"
color_converter_rgb2hex(175,78,161);

// cada una de estas funciones me devuelve un componente del color RGB
color_converter_hex2dec("af4ea1", R_COMPONENT); // 175
color_converter_hex2dec("#AF4EA1", G_COMPONENT); // 78
color_converter_hex2dec("aF4ea1", B_COMPONENT); // 161


(R_COMPONENT, G_COMPONENT y b_COMPONENT son opcionales, se podria usar directamente 0, 1 y 2)

Espero te sirva.
Title: Re:Convertir hexadecimal a RBG
Post by: Futu-block on January 25, 2019, 08:33:04 AM
gracias a los dos, estoy estudiando los códigos por si tengo que saltar de los 8 bits a... 32? je je