/** * 将多个Bitmap合并成一个图片。 * @param columns 将多个图合成多少列 * @param bitmaps 要合成的图片 * @return */ public static Bitmap combineBitmaps(int columns, Bitmap... bitmaps) { if (columns <= 0 || bitmaps == null || bitmaps.length == 0) { throw new IllegalArgumentException( "Wrong parameters:columns must > 0 and bitmaps.length must >0."); } int maxWidthPerImage = 0; int maxHeightPerImage = 0; for (Bitmap b : bitmaps) { maxWidthPerImage = maxWidthPerImage > b.getWidth() ? maxWidthPerImage : b.getWidth(); maxHeightPerImage = maxHeightPerImage > b.getHeight() ? maxHeightPerImage : b.getHeight(); } int rows = 0; if (columns >= bitmaps.length) { rows = 1; columns = bitmaps.length; } else { rows = bitmaps.length % columns == 0 ? bitmaps.length / columns : bitmaps.length / columns + 1; } Bitmap newBitmap = Bitmap.createBitmap(columns * maxWidthPerImage, rows * maxHeightPerImage, Config.RGB_565); for (int x = 0; x < rows; x++) { for (int y = 0; y < columns; y++) { int index = x * columns + y; if (index >= bitmaps.length) { break; } newBitmap = mixtureBitmap(newBitmap, bitmaps[index], new PointF(y * maxWidthPerImage, x * maxHeightPerImage)); } } return newBitmap; }