颜色值错误

时间:2013-06-05 02:09:55

标签: android eclipse

我的应用程序是从图库中调用图像,当您单击图像的某个位置时,它会显示颜色。我正面临一个问题;我正在使用这些代码来获取图像上每个位置的颜色值。有趣的是,它正确地检测颜色值(即红色显示r = 255,g = 0,b = 0)但是当谈到颜色名称时(我使用'TextToSpeech'来说出颜色名称) ),它主要是说“颜色是黑色的(除非你点击白色,它说颜色是白色的。 这是我的代码:

    if  ((Color.red(pixel) & Color.blue(pixel) & Color.green(pixel))> 220) {
        if(TTSInitialized){
            mTts.speak("Color is White", TextToSpeech.QUEUE_FLUSH, null);
        }
        textViewCol.setText("Color is White.");
        return true;}

    if  ((Color.red(pixel) & Color.blue(pixel) & Color.green(pixel)) < 10) {
        if(TTSInitialized){
            mTts.speak("Color is Black", TextToSpeech.QUEUE_FLUSH, null);
        }
        textViewCol.setText("Color is Black.");
        return true;}

    if  ((Color.red(pixel) & Color.blue(pixel)) > 120) {
        if(TTSInitialized){
            mTts.speak("Color is Purple", TextToSpeech.QUEUE_FLUSH, null);

        }
        textViewCol.setText("Color is Purple.");
    return true;}

    if  (Color.red(pixel) > (Color.blue(pixel) & Color.green(pixel))) {
        if(TTSInitialized){
            mTts.speak("Color is  RED", TextToSpeech.QUEUE_FLUSH, null);
        }
        textViewCol.setText("Color is  Red.");
        return true;}

我的应用程序有红色,绿色,蓝色,黄色,紫色,青色,黑色和白色。现在的问题是:我正在编写代码的方式是否正确?如果没有,你有什么建议?为什么它总是说黑色,无论你点击红色,蓝色还是任何其他颜色?!

1 个答案:

答案 0 :(得分:1)

你在第二次检查时有点偏僻。我想你想要这个:

  if  ((Color.red(pixel) | Color.blue(pixel) | Color.green(pixel)) < 10) {
        if(TTSInitialized){
            mTts.speak("Color is Black", TextToSpeech.QUEUE_FLUSH, null);
        }
        textViewCol.setText("Color is Black.");
        return true;
   }

通过这种方式,您可以获取值并获取累积金额,而不是三个值中的最小值。

例如:

3 | 7 | 255 = 255

但3&amp; 7&amp; 255 = 3

另外,通过您的所有检查,我可能会重做它们。 &安培;实际上是检查更多的位掩码而不是强度。使用&amp;,您只能获得每个数字中设置的位。

白色,我使用:

if  (Color.red(pixel) > 220 && Color.blue(pixel) > 220 && Color.green(pixel) > 220)

表示紫色:

if  (Color.red(pixel) > 120  && Color.blue(pixel) > 120)

表示红色:

if  (Color.red(pixel) > (Color.blue(pixel) | Color.green(pixel)))