gpt4 book ai didi

java - 如何在 Java 中垂直翻转图像?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:58 25 4
gpt4 key购买 nike

我必须水平翻转图像,但当我输入代码时,它只翻转了一半,因此它反射(reflect)了图像的一半。我做错了什么?

public static void flipVertical(Pixel[][] imageArr)
{
int height = imageArr.length;
int width = imageArr[0].length;

for(int row = 0; row < height; row++)
{
for(int col = 0; col < width; col++)
{
Pixel p = imageArr[row][col];

imageArr[height - row - 1][col] = p;
}
}

最佳答案

您的代码目前不起作用,因为它正在将翻转后的图像下半部分复制到上半部分,而没有将原始数据保留在图像的上半部分。因此,当它处理图像的下半部分时,实际上是将相同的数据再次复制回下半部分。

当你交换两个值时,ab,你需要使用一个临时变量:

Pixel tmp = a;
a = b;
b = a;

如果你这样做的话:

a = b;  // After, a == b and b == b.
b = a;

那么第二个赋值实际上是空操作,因为 a 的值已经是 b

因此,您需要将内部循环更新为:

Pixel p = imageArr[row][col];
imageArr[row][col] = imageArr[height - row - 1][col];
imageArr[height - row - 1][col] = p;

另外,外层的 for 循环应该是:

for(int row = 0; row < height/2; row++)

否则你翻转图像,然后再翻转回来。

关于java - 如何在 Java 中垂直翻转图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33514842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com