如何在J2ME里放大和缩小图片

/***************************************************************************
 * http://blog.csdn.net/the3gwireless
 * 放大图片的方法
 */
public static Image zoomInImage(Image img) {

    int[] rgbOutput = null;
    int width = 0, height = 0;
    int[] rgbInput = null;
    try {

        width = img.getWidth();
        height = img.getHeight();
        rgbInput = new int[width * height];
        rgbOutput = new int[(width << 1) * (height << 1)];
        img.getRGB(rgbInput, 0, width, 0, 0, width, height);
        int i, j, k;
        k = 0;
        for (i = 0; i < (height << 1); i += 2) {
            for (j = 0; j < (width << 1); j += 2) {
                if (j < 3) {
                    // System.out.println(i * (width << 1) + j);
                    // System.out.println((i + 1) * (width << 1) + j);
                    // System.out.println(i * (width << 1) + j + 1);
                    // System.out.println((i + 1) * (width << 1) + j + 1);
                }
                rgbOutput[i * (width << 1) + j] = rgbInput[k];
                rgbOutput[(i + 1) * (width << 1) + j] = rgbInput[k];
                rgbOutput[i * (width << 1) + j + 1] = rgbInput[k];
                rgbOutput[(i + 1) * (width << 1) + j + 1] = rgbInput[k];
                k++;
            }
        }
        return Image.createRGBImage(rgbOutput, width << 1, height << 1,
                                    true);
    } catch (OutOfMemoryError e) {
        // e.printStackTrace();
        ImageAlbum.showAlert("图像尺寸太大,不能完成此操作.");
        return img;
    } finally {
        rgbOutput = null;
        rgbInput = null;
    }

}

/***************************************************************************
 * 缩小图片的方法
 */
public static Image zoomOutImage(Image img) {

    int[] rgbOutput = null;
    int width = 0, height = 0;
    int[] rgbInput = null;
    try {
        width = img.getWidth();
        height = img.getHeight();
        // System.out.println(width >> 1);
        // System.out.println(height >> 1);
        rgbInput = new int[width * height];
        rgbOutput = new int[(width >> 1) * (height >> 1)];
        img.getRGB(rgbInput, 0, width, 0, 0, width, height);
        int i, j, k, k1;
        k = 0;
        k1 = 0;
        // System.out.println(height);
        // System.out.println(width);
        for (i = 0; i < height; i++) {
            for (j = 0; j < width; j += 2) {
                if (i % 2 == 0) {
                    if (k1 > width * height - 1
                        || k > (width >> 1) * (height >> 1) - 1) {
                        // System.out.println("k=" + k);
                        // System.out.println("k1=" + k1);
                        break;
                    }
                    rgbOutput[k] = rgbInput[k1];
                    k++;
                    k1 += 2;
                    // System.out.println(k);
                    // System.out.println(k1);
                } else {
                    k1 += 2;

                }
            }
        }

        return Image.createRGBImage(rgbOutput, width >> 1, height >> 1,
                                    true);
    } catch (OutOfMemoryError e) {
        // e.printStackTrace();
        ImageAlbum.showAlert("图像尺寸太大,不能完成此操作.");
        return img;
    } finally {
        rgbOutput = null;
        rgbInput = null;
    }

}