我有一个这样的方法,它只是将图像分成几个块

public void splitImage(Bitmap bmp, int chunks, int imageCode) {

        int chunkHeight, chunkWidth;
        int rows, cols;
        rows = cols = 5;

        //To store all the small image chunks in bitmap format in this list
        ArrayList<Bitmap> greyImageChunks = new ArrayList<Bitmap>(chunks);
        ArrayList<Bitmap> greenImageChunks = new ArrayList<Bitmap>(chunks);
        ArrayList<Bitmap> redImageChunks = new ArrayList<Bitmap>(chunks);


        //Getting the scaled bitmap of the source image
        //BitmapDrawable drawable = (BitmapDrawable) image.getDrawable();
        //Bitmap bitmap = drawable.getBitmap();
        Bitmap scaledBitmap = Bitmap.createScaledBitmap(bmp, bmp.getWidth(), bmp.getHeight(), true);

        rows = cols = (int) Math.sqrt(chunks);
        chunkHeight = bmp.getHeight()/rows;
        chunkWidth = bmp.getWidth()/cols;

        //xCoord and yCoord are the pixel positions of the image chunks
        int yCoord = 0;
        for(int x=0; x<rows; x++){
            int xCoord = 0;
            for(int y=0; y<cols; y++){

                if(imageCode == 1) {
                    greyImageChunks.add(Bitmap.createBitmap(scaledBitmap, xCoord, yCoord, chunkWidth, chunkHeight));
                } else if(imageCode == 2) {
                    greenImageChunks.add(Bitmap.createBitmap(scaledBitmap, xCoord, yCoord, chunkWidth, chunkHeight));
                } else if(imageCode == 3) {
                    redImageChunks.add(Bitmap.createBitmap(scaledBitmap, xCoord, yCoord, chunkWidth, chunkHeight));
                }

                xCoord += chunkWidth;
            }
            yCoord += chunkHeight;
        }
    }


在这里,我想使用另一个方法mergeImages()从greyImageChunks,greenImageChunks和redImageChunks中检索块。

这些是本地创建的,因此外界无法访问。
在此方法之外,是否有任何方法可以访问这些数组列表。
从一个本地ArrayList到另一全局ArrayList的任何复制方法都可以吗?
请帮我。

注意:ArrayList的大小应该是动态的,因为ArrayList的大小是使用splitImage()方法中的int块定义的

最佳答案

如果我正确理解,请创建一个全局ArrayListmArrayList

ArrayList<Bitmap> mArrayList= new ArrayList<Bitmap>();


现在在您的方法内部,在for循环之后,将所有三个本地ArrayList添加到Global ArrayList。

for(int x=0; x<rows; x++){
        int xCoord = 0;
        for(int y=0; y<cols; y++){

            if(imageCode == 1) {
                greyImageChunks.add(Bitmap.createBitmap(scaledBitmap, xCoord, yCoord, chunkWidth, chunkHeight));
            } else if(imageCode == 2) {
                greenImageChunks.add(Bitmap.createBitmap(scaledBitmap, xCoord, yCoord, chunkWidth, chunkHeight));
            } else if(imageCode == 3) {
                redImageChunks.add(Bitmap.createBitmap(scaledBitmap, xCoord, yCoord, chunkWidth, chunkHeight));
            }

            xCoord += chunkWidth;
        }
        yCoord += chunkHeight;
    }
mArrayList.addAll(greyImageChunks);
mArrayList.addAll(greenImageChunks);
mArrayList.addAll(redImageChunks);

关于android - 从本地Arraylist复制到android中的全局ArrayList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38519336/

10-15 21:04