Java 使用用户输入变量翻转任何图像的方形部分的代码有问题
这是一个方法的代码,该方法在从另一个java文件传递的位置翻转图像的方形部分。目前,这是我试图让它工作的一次尝试。其他各种尝试只允许代码通过一次X迭代,而不会继续到不同Y级别的其他迭代Java 使用用户输入变量翻转任何图像的方形部分的代码有问题,java,image,arraylist,pixel,Java,Image,Arraylist,Pixel,这是一个方法的代码,该方法在从另一个java文件传递的位置翻转图像的方形部分。目前,这是我试图让它工作的一次尝试。其他各种尝试只允许代码通过一次X迭代,而不会继续到不同Y级别的其他迭代 public void flipVertical(int x, int y, int size) { int middle = x; Pixel leftPixel = null; Pixel rightPixel= null; Pixel value = null;
public void flipVertical(int x, int y, int size)
{
int middle = x;
Pixel leftPixel = null;
Pixel rightPixel= null;
Pixel value = null;
int sizer = size/2;
int sourceX = x - sizer;
int targetX = x + sizer;
int sourceY = y - sizer;
int targetY = y + sizer;
int green = 0;
int blue = 0;
int red = 0;
int green2 = 0;
int blue2 = 0;
int red2 = 0;
//loops through the rows
for (sourceY = y - sizer; sourceY < targetY; sourceY++)
{
//loop from start to end of X
sourceX = x - sizer;
for (sourceX = x - sizer; sourceX < targetX; sourceX++)
{
//get pixel locations
leftPixel = getPixel (sourceX, sourceY);
rightPixel = getPixel(targetX--, sourceY);
// Swap colors with opposite pixels
red2 = leftPixel.getRed();
green2 = leftPixel.getGreen();
blue2 = leftPixel.getBlue();
red = rightPixel.getRed();
green = rightPixel.getGreen();
blue = rightPixel.getBlue();
leftPixel.setRed(red);
leftPixel.setGreen(green);
leftPixel.setBlue(blue);
rightPixel.setRed(red2);
rightPixel.setGreen(green2);
rightPixel.setBlue(blue2);
}
}
}
public void flipVertical(整数x、整数y、整数大小)
{
int中间=x;
像素leftPixel=null;
Pixel rightPixel=null;
像素值=零;
int sizer=大小/2;
int sourceX=x-sizer;
int targetX=x+sizer;
int sourceY=y-sizer;
int targetY=y+sizer;
绿色整数=0;
int蓝色=0;
红色整数=0;
int green2=0;
int-blue2=0;
int red2=0;
//在行中循环
对于(sourceY=y-sizer;sourceY
您没有为每一行重置targetX
,即使您正在循环中修改它(targetX--
)。这将正确处理第一行,但不会正确处理其余行。您需要:
//loop from start to end of X
sourceX = x - sizer;
targetX = x + sizer; // <- reset targetX
for (sourceX = x - sizer; sourceX < targetX; sourceX++)
...
//从X的开始到结束循环
sourceX=x-施胶器;
targetX=x+sizer;//你发布的代码对你有什么影响?@JasonC当前的代码我只看到一行像素被交换,我最近做了另一个版本,只显示最远的像素被交换,没有显示身体像素