Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中生成RGB到CMYK值_Android_Image Processing_Rgb_Cmyk - Fatal编程技术网

在android中生成RGB到CMYK值

在android中生成RGB到CMYK值,android,image-processing,rgb,cmyk,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-

我想用这个代码生成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???

如果你使用整数,那么:

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

23/113=0请在日志中打印RGB的初始值,我认为R、G和B的值已经是
0
。当整数数学的结果开始得到0时,通常是因为表达式中的除数大于被除数
intx=1/5=>0
inty=1/1.2=>0
,而
double z=1/1/2=>0.833333
@Salman Khakwani:R=90,G=113,B=99。。它的表演在log@depwl9992是的,我知道,这就是为什么我把小的c,m,y设为浮点,而大写的c,m,y,K是整数。。。但是它仍然给结果集0,c,m,y是浮动的。C,M,Y,K是int.是C=((255-90-142)/(255-142))=(23/113)=020353(因为C是浮动的)的结果,然后C=(int)(255*020353)=51.但它在C给出0,,,我的错误在哪里???@adi.zean因为正常数字(255,90,142)是int所以((255-90-142)/(255-142))是int.把它改为((255f-90-142)/(255-142))