Hello StackOverflow社区。 我需要一些关于将位图分成小块的可能方法的信息。 更重要的是,我需要一些选择来判断。我查了很多帖子,但我仍然不完全相信该怎么做。
How do I cut out the middle area of the bitmap?
这两个链接是我找到的一些不错的选项,但我无法计算每种方法的CPU和RAM成本,或者我可能根本不应该打扰这个计算。尽管如此,如果我要做某事,为什么不从头开始做最好的方法。
我将非常感谢获得有关位图压缩的一些提示和链接,因此我可能会在两种方法中获得更好的性能。
我提前感谢你。
答案 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;
}