CIElab至RGB限制不可能的颜色算法

时间:2018-07-07 21:20:26

标签: java android algorithm performance colors

在为色彩空间转换添加限制因素时,我陷入了LAB到RGB的困境。基本上这就是我现在拥有的

   //block 1
        if (r > 255 || r < 0 || g > 255 || g < 0 || b > 255 || b < 0) {
            if (container3.getChildAt(i) instanceof ImageView) {
                (container3.getChildAt(i)).setBackgroundColor(0);
            }
   //block 2
        } else if (i > 0 && (r == 0 && g == 0 && b == 0) || (r == 255 && g == 255 && b == 255) ) {
            int cc1 = ((ColorDrawable) container3.getChildAt(i - 1).getBackground()).getColor();
            int cc2 = ((ColorDrawable) container3.getChildAt(i).getBackground()).getColor();
            if (Color.red(cc1) == 0 && Color.green(cc1) == 0 && Color.blue(cc1) == 0
                    && Color.red(cc2) == 0 && Color.green(cc2) == 0 && Color.blue(cc2) == 0 ) {
                if (container3.getChildAt(i) instanceof ImageView) {
                    (container3.getChildAt(i)).setBackgroundColor(0);
                }
            }
   //block 3
        } else if (container3.getChildAt(i) instanceof ImageView) {
            (container3.getChildAt(i)).setBackgroundColor(Color.argb(255, r, g, b));
            int cc = ((ColorDrawable) container3.getChildAt(i).getBackground()).getColor();
            Log.e("LABtest ", Color.red(cc) +" "+  Color.green(cc)+" "+Color.blue(cc));
        }

简要说明,我有以下限制:

  1. 块:基本上,如果结果颜色中的任何一个超过0..255比例
  2. block:棘手的一个,在LAB空间中,将深色和白色反向混合后,深色往往保持在0-0-0或255-255-255,因此我需要在第一次遇到后删除所有重复的0-0-0的情况。添加了i> 1以仅比较不包括第一个孩子的现有孩子,因为我需要保持第一个孩子的遭遇。但是,该部分会产生大量的怪异行为。而不是擦掉黑点,它保留了以前的颜色计算结果,即如果以前我有10个带有新颜色的子项,则新案例将3个具有新颜色的子项添加到1st 0-0-0,并用以前的颜色填充其余部分,就好像该部分代码被取消了一样颜色分配。

0 个答案:

没有答案