因此,我必须使用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()));
      }
    }
  }


但是,当执行此操作而不是翻转图像时,我得到的是这样的内容:

原版的:
java - 在Java中翻转图片时遇到问题-LMLPHP

“翻转”:java - 在Java中翻转图片时遇到问题-LMLPHP

谢谢你们的帮助

最佳答案

// 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);
        }


那看起来很有希望。

关于java - 在Java中翻转图片时遇到问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34023858/

10-13 04:14