简体   繁体   English

如何在C中将RGB分量转换为百分比?

[英]How to convert an RGB component to a percentage in C?

如何将RGB分量(0-255)转换为浮点数,其中255为1.0f,0为0.0f?

What's wrong with dividing? 除法有什么问题?

unsigned char red = 45;
float percentage = red/255.0f;

Like this: 像这样:

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

And if you have the entire rgb value in the int you have this option. 如果您在int中拥有整个rgb值,则可以使用此选项。

//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);
}

Output 输出量

Alpha 80.00%
Red 86.67%
Green 20.00%
Blue 93.33%

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM