水平和/或垂直翻转图像很简单。前提是给定一个通过导入图片创建的2D整数数组,我必须创建一个带有int [] []参数的方法,并在返回void之前将其水平翻转。
语法如下:
public static void horizontalFlip(int[][] imgArray)
{
int temp;
for (int i = 0; i < imgArray.length; i++)
{
for (int j = 0; j < imgArray[i].length / 2; j++)
{
temp = imgArray[i][j];
imgArray[i][j] = imgArray[imgArray.length - 1 - i][j];
imgArray[imgArray.length - 1 - i][j] = temp;
}
}
}
我使用imgArray作为数组参数,并使用temp作为占位符,而循环交换像素,或者更确切地说,这是意图。目前,在提示翻转后窗口什么都不做。有人可以帮助我找到逻辑或语法的问题吗?
在此先感谢,请说明我应提供的任何细节 附:我可以确认未提供的代码是否正常运行并进行了测试。
答案 0 :(得分:1)
这种情况正在发生,因为您使用的是i
而不是j
。但是i
在中途停止后不会停止,但它会继续并重新交换阵列
这是一个正确的代码:
for (int i = 0; i < imgArray.length; i++) {
for (int j = 0; j < imgArray[i].length / 2; j++) {
temp = imgArray[i][j];
imgArray[i][j] = imgArray[i][imgArray.length - 1 - j];
imgArray[i][imgArray.length - 1 -j] = temp;
}
}
或者如果要交换列,而不是行:
for (int i = 0; i < imgArray.length / 2; i++) {
for (int j = 0; j < imgArray[i].length; j++) {
temp = imgArray[i][j];
imgArray[i][j] = imgArray[imgArray.length - 1 - i][j];
imgArray[imgArray.length - 1 -i][j] = temp;
}
}
答案 1 :(得分:0)
这将正确地水平翻转图像:
public static void horizontalFlip(int[][] imgArray)
{
int temp;
for (int i = 0; i < imgArray.length; i++) {
for (int j = 0; j < imgArray[i].length/2; j++) {
temp = imgArray[i][j];
imgArray[i][j] = imgArray[i][imgArray[i].length - 1 - j];
imgArray[i][imgArray[i].length - 1 - j] = temp;
}
}
}
答案 2 :(得分:0)
请在下面查看我的解决方案,
project_id