我还在学习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颜色?
答案 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);
}
}
}
}
它应该工作,你需要添加你的测试,否则改变像素的颜色,如果你有一些问题,请问