Java 关于迭代图像中每个像素的简单问题

Java 关于迭代图像中每个像素的简单问题,java,iteration,pixels,Java,Iteration,Pixels,好吧,这看起来真的很愚蠢,但请容忍我。一年前,我做了一个小程序来对图像执行各种操作,现在我有点生疏了,不得不做一些模糊相似的事情。我正在查看旧的应用程序,以便帮助我入门,但有一件非常简单的事情我的头脑不想理解刚才的逻辑。基本上,我在图像中的每个像素上循环,以便对该位置做些什么,现在到底是什么并不重要。基本思路如下: for (int x = 0; x < inputImage.getWidth(); x++) { for(int y = 0; y < inputImage.g

好吧,这看起来真的很愚蠢,但请容忍我。一年前,我做了一个小程序来对图像执行各种操作,现在我有点生疏了,不得不做一些模糊相似的事情。我正在查看旧的应用程序,以便帮助我入门,但有一件非常简单的事情我的头脑不想理解刚才的逻辑。基本上,我在图像中的每个像素上循环,以便对该位置做些什么,现在到底是什么并不重要。基本思路如下:

for (int x = 0; x < inputImage.getWidth(); x++) {
    for(int y = 0; y < inputImage.getHeight(); y++) {
        *code in here*
    }
}
for(int x=0;x

现在我不明白的是这个。当然,嵌套for循环的逻辑意味着在每个循环之后,x和y都会递增。所以在第一个过程中,x=0,y=0。第二遍,x=1,y=1,依此类推。这意味着您只能选择从图像左上角到右下角的对角线像素,而忽略了大量像素,例如位于x=0、y=1的像素。我知道这很简单,当然也有道理,但我只是不明白现在的逻辑!非常感谢。

不,嵌套循环根本不是这样做的。
y
循环完全位于
x
循环体内部(这就是嵌套的意思),因此整个
y
循环在
x
循环的每次迭代中运行

x = 0
   y = 0, y = 1, y = 2, ...
x = 1
   y = 0, y = 1, y = 2, ...
如果您愿意,只需在对角线元素上迭代即可实现您所想的行为:

for (int x = 0, int y = 0;
           x < inputImage.getWidth && y < inputImage.getHeight;
           x++, y++) {
     // stuff
}
for(intx=0,inty=0;
x

注意
x
y
在同一个循环中是如何递增的;没有嵌套的“子循环”。(免责声明:我已经有一段时间没有使用Java了,我可能把语法弄乱了一点)

没有。
x
y
实际上并不是同时递增的


y
0
变为
inputImage.height-1
对于每个
x
0
inputImage.width-1
。这意味着,在移动到图像上的另一列之前,您将完全遍历第一列,依此类推。

是否尝试运行两个嵌套循环并打印变量?这应该是
inputImage.height-1
inputImage.width-1
。谢谢。我知道这是一件非常简单的事情,我已经很久没有做任何编程了。天知道我将如何处理更复杂的问题哈哈。在我发布这篇文章后不久,我就意识到它必须是如何工作的,我拿出了旧笔和旧纸,这是一套非常宝贵但经常被遗忘的工具。