2013-02-17 89 views
-1

我试图重新缩放图像数组,使它们都具有相同的宽度和高度。我无法返回数组。任何帮助都会很棒。缩放图像阵列Java

public static Picture[] resize(Picture[] slides, String[] args) { 


    int w = 298; 
    int h = 298; 

    Picture [] source = new Picture [Integer.parseInt(args[0])]; 

    for (int ti = 0; ti < w; ti++){ 
     for (int tj = 0; tj < h; tj++){ 
      Picture [] target = new Picture[ti+1]; 
      int si = tj * source[ti].width()/w; 
      int sj = tj * source[tj].height()/h; 
      target[ti].set(ti, tj, source[0].get(si, sj)); 
     } 
    } 
    return target; 
} 
+0

我不知道这段代码应该如何工作。你为什么要创建一个图片数组,其中包含的元素数量与您在源图片中水平扫描的像素数量一样多?为什么你永远不会创建目标'Picture'对象,并设置一个'target [ti]'显然是'null'的像素?为什么你只能访问'source'的第0个元素?我认为你需要回到如何使用数组的基本原则:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html – millimoose 2013-02-17 20:42:48

+0

(无论如何,投票关闭,因为代码上面的例子几乎是无法修复的,并且在这个问题中存在主要的XY问题。) – millimoose 2013-02-17 20:44:16

回答

3

你的问题有点不清楚,你的源代码很混乱。看起来你只需要编辑传入的数组。你可以修改它,以便它复制输入数组并创建一个新数组,System.arraycopy()就可以实现这个功能。

我试图回答我相信你需要的东西,但是我不知道你的图片类的API。您可以像您在示例中那样使用set(...)而不是我已使用的API调用。

public static Picture[] resize(Picture[] slides, String[] args) { 
    int w = 298; 
    int h = 298; 

    for(Picture i : slides) { 
     i.setHeight(h); 
     i.setWidth(w); 
    } 
    return slides; 
} 
0

Pictures阵列称为target,仅将在其被声明的块的范围内的存在。 target数组可以被引用的范围由最内层for循环的开始和结束括号标记。

为了能够参考target在你有return语句的行,你需要在两个for循环之外声明它。

至于其他代码,正如其他人已经指出的那样,目前还不清楚发生了什么。

slides参数未使用:如果您不使用它,请将其删除。

args参数命名较差:将其重命名以指示其内容。

执行这些步骤将使我们更容易为您提供进一步的帮助。