在android中生成RGB到CMYK值

时间:2013-08-18 18:38:16

标签: android image-processing rgb cmyk

我想使用此代码生成RGB到CMYK值

    pixel = temp.getPixel(i,j);
    R = Color.red(pixel);
    G = Color.green(pixel);
    B = Color.blue(pixel);
    K = Math.min(Math.min(255-R, 255-G), 255-B);
    if (K!=255){
        c = ((255-R-K)/(255-K));
        m = ((255-G-K)/(255-K));
        y = ((255-B-K)/(255-K));
        C = (int)(255*c);
        M = (int)(255*m);
        Y = (int)(255*y);
    } else {
        C = 255-R;
        M = 255-G;
        Y = 255-B;
    }

变量像素的类型,R,G,B,K,C,M和Y是整数。变量 c,m和y的类型是float 。但是当我像这样向日志猫显示结果时,

Log.i("CMYK", String.valueOf(C)+" "+String.valueOf(M)+" "+String.valueOf(Y)+" "+String.valueOf(K));
Log.i("CMYK", String.valueOf(c)+" = ((255-"+String.valueOf(R)+"-"+String.valueOf(K)+")/(255-"+String.valueOf(K)+"))");
Log.i("CMYK", String.valueOf(m)+" = ((255-"+String.valueOf(G)+"-"+String.valueOf(K)+")/(255-"+String.valueOf(K)+"))");
Log.i("CMYK", String.valueOf(y)+" = ((255-"+String.valueOf(B)+"-"+String.valueOf(K)+")/(255-"+String.valueOf(K)+"))");

他们给我这个日志猫的结果:

08-18 18:34:49.080: I/CMYK(819): 0 0 0 142
08-18 18:34:49.080: I/CMYK(819): 0.0 = ((255-90-142)/(255-142))
08-18 18:34:49.080: I/CMYK(819): 0.0 = ((255-113-142)/(255-142))
08-18 18:34:49.090: I/CMYK(819): 0.0 = ((255-99-142)/(255-142))

就像日志所说的那样,R = 90,G = 113,B = 99 ...... 任何人都可以解释为什么数学结果是0 ??

1 个答案:

答案 0 :(得分:0)

如果您使用整数:

255-90-142 = 23
255-142 = 113
23 / 113 = 0   <-- becouse it's int

其他代码也一样。