找到特定的颜色Java

时间:2016-05-15 18:36:06

标签: java colors

我还在学习Java,所以如果问题太容易请耐心等待..我试图在if条件下找到一个特定的颜色,让我们说蓝色(RGB:(0,0,225))使用以下for循环按像素逐个图片:

    public void findColor(){     

            for (int w=0; w< this.width; w++){
                for(int h=0; h< this.height; h++){

                    if(this.Picture[w][h]=??){

我还有另一个类来指定RGB颜色:

 public class Color {

    private int red;
    private int green;
    private int blue;

    public Color(int r, int g, int b){
        this.red=r;
        this.green=g;
        this.blue=b;
    }

    public Color(Color c){
        this.red=c.red;
        this.green=c.green;
        this.blue=c.blue;
    }

    public void setColor(int r, int g, int b){
        this.red= r;
        this.green= g;
        this.blue = b;
    }

    public int colorRed(){
        return this.red;
    }

    public int colorGreen(){
        return this.green;
    }


    public int colorBlue(){
        return this.blue;
    }
}   

我的问题是,如何连接这两个类以检查像素的RGB颜色?

2 个答案:

答案 0 :(得分:1)

首先,我会将方法头findColor ()更改为findColor (Color aColor)。所以你可以重复使用这种方法。

你没有给我们任何暗示神秘Picture是什么的提示。但是如果您将图像保存在BufferedImage中,则可以通过调用Picture.getRGB(x,y)来获取RGB颜色。 BufferedImage on oracle中的更多文档。

在您的示例中,它将是int int packedInt = img.getRGB(w, h);然后您应该将此值转换为Color对象。 Color myColor = new Color(packedInt, true);

此时你应该考虑使用标准的JAVA Color类而不是你的类。

现在,您可以将实际myColor与方法的输入字段进行比较。

编辑:在stackowerflow上有类似的问题: link

答案 1 :(得分:1)

我一直用它来获取像素颜色

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class Main {
  public static void main(String args[]) throws IOException {
        File file = new File("your_file.jpg");
        BufferedImage image = ImageIO.read(file);

        int w = image.getWidth();
        int h = image.getHeight();
        for (int i = 0; i < h; i++) {
           for (int j = 0; j < w; j++) {
              int pixel = image.getRGB(w, h);
              int red = (pixel & 0x00ff0000) >> 16;
              int green = (pixel & 0x0000ff00) >> 8;
              int blue = pixel & 0x000000ff;
              System.out.println("Red Color value = " + red);
              System.out.println("Green Color value = " + green);
              System.out.println("Blue Color value = " + blue);
         }
      }
   }
}

它应该工作,你需要添加你的测试,否则改变像素的颜色,如果你有一些问题,请问