使用java

时间:2017-04-07 21:19:21

标签: java methods pixel

我有一张照片,我正在尝试删除所有绿色像素。如何使用简单的java和2D数组执行此操作?

到目前为止,我的代码看起来像这样:

public void removeGreen() {

      Picture pic = new Picture("IMG_7320.JPG");
      Pixel pixel = null;
      for (int row = 0; row < pic.getHeight(); row++) {
          for (int col = 0; col < pic.getWidth(); col++) {
              pixel = getPixel(row,col);
              pixel.getColor();
              if(pixel.getRed() < 40 & pixel.getBlue() < 160 & pixel.getGreen() > 220) {
                  Color white = new Color(255,255,255);
                  pixel.setColor(white);
              }
          }
      }
  }

(目前我正在尝试仅用白色像素替换绿色像素,因为我不确定如何完全删除像素。)

我用来测试removeGreen()方法的主方法中的代码如下所示:

//method to test removeGreen

  public static void testRemoveGreen() {

      Picture me = new Picture("IMG_7320.JPG");
      me.explore();
      me.removeGreen();
      me.explore();
  }

所以,我的代码现在看起来像这样:

public void removeGreen(图片图片){

for(int row = 0; row&lt; pic.getHeight(); row ++){

  for (int col = 0; col < pic.getWidth(); col++) {
      Pixel pixel = pic.getPixel(row,col);

      if((pixel.getRed() < 40) && (pixel.getBlue() < 160) && (pixel.getGreen() > 220)) {
          Color white = new Color(255,255,255);
          pixel.setColor(white);
      }
  }

} }

我的主要方法仍然是一样的。我仍然不明白为什么方法不能正常工作。

1 个答案:

答案 0 :(得分:0)

以下说明已更改传递的pic参数。

  public static void removeGreen(Picture pic) {
      for (int row = 0; row < pic.getHeight(); row++) {
          for (int col = 0; col < pic.getWidth(); col++) {
              Pixel pixel = pic.getPixel(row,col);
              if (pixel.getRed() < 40 && pixel.getBlue() < 160
                      && pixel.getGreen() > 220) {
                  pixel.setColor(Color.white);
              }
          }
      }
  }

&&是一个捷径AND:x && y()不会调用y,x是假的。

注意pic.getPixel。如果removeGreen旨在作为Picture的方法,请删除参数和static关键字,并pic.

public static void testRemoveGreen() {
    Picture me = new Picture("IMG_7320.JPG");
    me.explore();
    removeGreen(me);
    me.explore();
}

由于.jpg,JPEG格式没有透明度,因此需要将某些颜色(如白色)显示为“背景”。