Как преобразовать компонент RGB в процентах в C? - PullRequest
1 голос
/ 16 апреля 2011

Как преобразовать компонент RGB (0-255) в число с плавающей запятой, в котором 255 будет 1,0f, а 0 - 0,0f?

Ответы [ 3 ]

4 голосов
/ 16 апреля 2011

Что не так с делением?

unsigned char red = 45;
float percentage = red/255.0f;
2 голосов
/ 16 апреля 2011

И если у вас есть целое значение rgb в int, у вас есть эта опция.

//Color Component Percents
#define CCP_ALPHA(argb) (((argb) & 0xFF000000) >> 24)   / 255.0f
#define CCP_RED(rgb)    (((rgb) & 0xFF0000) >> 16)      / 255.0f
#define CCP_GREEN(rgb)  (((rgb) & 0xFF00) >> 8)         / 255.0f
#define CCP_BLUE(rgb)   ((rgb) & 0xFF)                  / 255.0f


int main(int argc, char *argv[])
{
    int argb = 0xCCDD33EE;
    printf("Alpha %.2f%%\nRed %.2f%%\nGreen %.2f%%\nBlue %.2f%%\n",
           CCP_ALPHA(argb) * 100,
           CCP_RED(argb) * 100,
           CCP_GREEN(argb) * 100,
           CCP_BLUE(argb) * 100);
}

Выход

Alpha 80.00%
Red 86.67%
Green 20.00%
Blue 93.33%
2 голосов
/ 16 апреля 2011

Как это:

int rgbValue = 123;
float fpValue = rgbValue / 255.0;
...