I want to write a function that resizes a 2D array to the given parameters. Its a general resize array:
public static int[][] resize(int[][] source, int newWidth, int newHeight) {
int[][] newImage=new int[newWidth][newHeight];
double scale=newWidth/source.length;
for (int j=0;j<newHeight;j++)
for (int i=0;i<newWidth;i++)
newImage[i][j]=source[(int)(i/scale)][(int)(j/scale)];
return newImage;
The code above has no problems, it works great for integer resizing. The problem arises however, when I use the resize function to resize an array by a factor of 0.5.
int[][] newImage=new int[source.length][source.length];
newImage=resize(source,source.length/2,source[0].length/2);
return newImage;
Then everything goes crazy. I get an outofboundserrorexception of like 2147483647. The problem lies in the double scale
variable in the first function and the type casting I used in the first function in the last line. Any ideas for fixes?
Note: source.length is the width (columns) of the array, and source[0].length is the height(rows).