如何将位图划分为位图的部分

时间:2013-11-01 13:56:02

标签: android bitmap

Hello StackOverflow社区。 我需要一些关于将位图分成小块的可能方法的信息。 更重要的是,我需要一些选择来判断。我查了很多帖子,但我仍然不完全相信该怎么做。

cut the portion of bitmap

How do I cut out the middle area of ​​the bitmap?

这两个链接是我找到的一些不错的选项,但我无法计算每种方法的CPU和RAM成本,或者我可能根本不应该打扰这个计算。尽管如此,如果我要做某事,为什么不从头开始做最好的方法。

我将非常感谢获得有关位图压缩的一些提示和链接,因此我可能会在两种方法中获得更好的性能。

我提前感谢你。

2 个答案:

答案 0 :(得分:6)

此功能允许您将位图拆分为行数和列数。

示例Bitmap [] [] bitmaps = splitBitmap(bmp,2,1); 将创建存储在二维数组中的垂直分割位图。 2列1行

示例Bitmap [] [] bitmaps = splitBitmap(bmp,2,2); 将位图拆分为存储在二维数组中的四个位图。 2列2行

public Bitmap[][] splitBitmap(Bitmap bitmap, int xCount, int yCount) {
    // Allocate a two dimensional array to hold the individual images.
    Bitmap[][] bitmaps = new Bitmap[xCount][yCount];
    int width, height;
    // Divide the original bitmap width by the desired vertical column count
    width = bitmap.getWidth() / xCount;
    // Divide the original bitmap height by the desired horizontal row count
    height = bitmap.getHeight() / yCount;
    // Loop the array and create bitmaps for each coordinate
    for(int x = 0; x < xCount; ++x) {
        for(int y = 0; y < yCount; ++y) {
            // Create the sliced bitmap
            bitmaps[x][y] = Bitmap.createBitmap(bitmap, x * width, y * height, width, height);
        }
    }
    // Return the array
    return bitmaps;     
}

答案 1 :(得分:4)

您想将位图划分为多个部分。我假设您想从bitmap.say中剪切相等的部分,例如,您需要从位图中获得4个相等的部分。

这是一种方法,它将位图分成4个相等的部分并将其放在位图数组中。

public Bitmap[] splitBitmap(Bitmap picture)
{

Bitmap[] imgs = new Bitmap[4];
 imgs[0] = Bitmap.createBitmap(picture, 0, 0, picture.getWidth()/2 , picture.getHeight()/2);
 imgs[1] = Bitmap.createBitmap(picture, picture.getWidth()/2, 0, picture.getWidth()/2, picture.getHeight()/2);
 imgs[2] = Bitmap.createBitmap(picture,0, picture.getHeight()/2, picture.getWidth()/2,picture.getHeight()/2);
 imgs[3] = Bitmap.createBitmap(picture, picture.getWidth()/2, picture.getHeight()/2, picture.getWidth()/2, picture.getHeight()/2);

return imgs;


}