【问题标题】:Trouble flipping images in Java在 Java 中翻转图像时遇到问题
【发布时间】:2015-12-01 15:23:22
【问题描述】:

所以我必须使用 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()));
      }
    }
  }

但是,当它执行时,而不是图像,翻转,我得到的是这样的:

原文:

“翻转”:

感谢大家的帮助

【问题讨论】:

  • 好吧,你没有删除以前的颜色
  • “通过将右侧的每种颜色与左侧的一种颜色交换来沿垂直中线镜像目标图像”-您基本上错过了“交换”部分
  • 您正在就地替换颜色,因此当您从左侧读取像素时,它们已经被覆盖。这就像“交换 x = 4 和 y = 2”,然后您执行 y = x; x = y。你最终会得到两个值 4 (y = 4, x = y = 4)。
  • @MuratK。那么我该如何去除以前的颜色呢?
  • @zubergu 我怎么会错过交换部分?我以为当我设置 NewX 坐标时,我在交换

标签: java image colors


【解决方案1】:
// 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);
        }

那个看起来很有希望。

【讨论】:

  • 将颜色放入数组仍然不起作用,我不知道为什么——它只会让所有东西都变白。
  • @TylerA 你能用 java.awt.Graphics2D 吗?
  • 我认为这个作业不允许这样做。只是awt.Color。
  • @TylerA 找到了一个用于翻转的代码。试试看。但是您必须稍微更改方法名称。
猜你喜欢
  • 2013-01-29
  • 1970-01-01
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 2020-03-18
相关资源
最近更新 更多