Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在尝试交换图像的两个部分_Java_Image - Fatal编程技术网

Java 正在尝试交换图像的两个部分

Java 正在尝试交换图像的两个部分,java,image,Java,Image,我试图以一种特定的方式交换图像两部分的值:我想将一个像素块向右移动225个像素,同时将其中的一个像素块向左移动225个像素。然而,看起来唯一的转变是第一个转变: public void exchange() { int[][] stablePic = picArray.clone(); for (int i = 80; i < 230; i++) { for (int j = 50; j < 250; j++)

我试图以一种特定的方式交换图像两部分的值:我想将一个像素块向右移动225个像素,同时将其中的一个像素块向左移动225个像素。然而,看起来唯一的转变是第一个转变:

public void exchange() {
    int[][] stablePic = picArray.clone();

        for (int i = 80; i < 230; i++)
        {
                for (int j = 50; j < 250; j++)
                {

                    picArray[i][j] = stablePic[i][j+225];

                    picArray[i][j+225] = stablePic[i][j];

                }
        }

}    
公共作废交换(){
int[][]stablePic=picArray.clone();
对于(int i=80;i<230;i++)
{
对于(int j=50;j<250;j++)
{
picArray[i][j]=stablePic[i][j+225];
picArray[i][j+225]=稳定的[i][j];
}
}
}    

“picArray”在代码的前面进行了初始化—编译并运行,但只进行了第一次交换—映像的第二部分仍然具有第一部分的外观。有没有办法让两个转换同时进行?

您确定第二个片段是唯一有效的片段?在我看来,这是第一个起作用的

要将一个数组复制到另一个数组,不要只分配它。为此使用2 for循环,当您看到它工作时,请研究如何使用
数组.copyOf
替换内部for循环

给你:

int[][] stablePic = picArray;

这使得两个变量指向同一个内存,那么当你修改你的
picArray
时,你也在修改你的
stablePic

你试图交换图像的两个部分以便于理解,就当你如何交换两个变量,即

int a=10;
int b=20;
int temp ;//take a temp variable for swapping

temp =a;
a=b;
b=temp;

像这样,您必须使用一个临时数组。用于交换。在您的代码中,第二个数组可以工作,因为它被前一个数组覆盖。

不需要标题中的“Java”。标签就足够了。这是你所有的相关代码吗?picArray的大小是多少?请用所有必要的括号将代码正确缩进。并发布更多相关代码。A将为您提供帮助fasterIt很难准确地说出代码应该做什么,或者它实际上在做什么,没有可编译的示例不需要测试
&l>250
,因为您已经从
l=275
开始了,而且它只显示您在2d数组中执行此操作吗?很多技术都是在将第一个第二部分交换到临时数组之前,先使用一个临时2d数组,然后从第二部分复制到第一部分,再从临时数组复制到第二部分。