无法在Java中翻转图像

时间:2015-12-01 15:23:23

标签: java image colors

所以我必须使用java.awt.color来翻转一些导入的图像。

这是我在垂直轴上翻转图像的主要方法:

  public void execute (Pixmap target)
  {
    Dimension bounds = target.getSize();
    // TODO: mirror target image along vertical middle line by swapping
    //       each color on right with one on left

    for (int x = 0; x < bounds.width; x++) {
      for (int y = 0; y < bounds.height; y++) {

        // new x position
        int newX =  bounds.width - x - 1;

        // flip along vertical 
        Color mirrorVert = target.getColor(newX, y);
        target.setColor(x, y, new Color (mirrorVert.getRed(),
                              mirrorVert.getGreen(),
                              mirrorVert.getBlue()));
      }
    }
  }

然而,当执行此操作而不是图像时,我会得到类似这样的内容:

原件: Original

&#34;翻转&#34;:"Flipped"

感谢y&#39;所有人的帮助

1 个答案:

答案 0 :(得分:0)

// flip along vertical 
        Color mirrorVert = target.getColor(newX, y);
        target.setColor(x, y, new Color (mirrorVert.getRed(),
                              mirrorVert.getGreen(),
                              mirrorVert.getBlue()));
       target.setColor(newX, y , new Color(255,255,255));
      }

这应该在理论上有效。基本上,我们的想法是将右侧的颜色设置为白色,同时将其复制到左侧。

实际上这不起作用......所以你能做的就是将新颜色保存在一个数组中。然后你就可以把所有东西都变白了,然后把换掉的颜色。

for (int i=0;i<image.getWidth();i++)
        for (int j=0;j<image.getHeight();j++)
        {
            int tmp = image.getRGB(i, j);
            image.setRGB(i, j, image.getRGB(i, image.getHeight()-j-1));
            image.setRGB(i, image.getHeight()-j-1, tmp);
        }

那个看起来很有希望。