缩放图像Java数组

时间:2013-02-17 20:32:52

标签: java image scale

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

  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;   
}

2 个答案:

答案 0 :(得分:3)

您的问题有点不清楚,您的源代码令人困惑。您似乎只需要编辑传入的数组。您可以修改它以便复制输入数组并创建一个新数组,System.arraycopy()可以实现此目的。

我试图回答我认为你需要的东西,但是我不知道你的Picture类的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;   
}

答案 1 :(得分:0)

名为Pictures的{​​{1}}数组只存在于声明它的块的范围内。可以引用target数组的范围由最内层for循环的开始和结束括号标记。

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

至于其他代码,正如其他人所指出的,目前尚不清楚发生了什么。

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

slides参数命名不佳:重命名它以指示其内容。

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