问题描述
|
如何将RGB分量(0-255)转换为浮点数,其中255为1.0f,0为0.0f?
解决方法
除法有什么问题?
unsigned char red = 45;
float percentage = red/255.0f;
,像这样:
int rgbValue = 123;
float fpValue = rgbValue / 255.0;
,如果您在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);
}
输出量
Alpha 80.00%
Red 86.67%
Green 20.00%
Blue 93.33%