/** * 拼接图片 * * @param bitmaps 原图片集 * @return 拼接后的新图 */ public static Bitmap combineImage(Bitmap... bitmaps) { boolean isMultiWidth = false;//是否为多宽度图片集 int width = 0; int height = 0; //获取图纸宽度 for (Bitmap bitmap : bitmaps) { if (width != bitmap.getWidth()) { if (width != 0) {//过滤掉第一次不同 isMultiWidth = true; } width = width < bitmap.getWidth() ? bitmap.getWidth() : width; } } //获取图纸高度 for (Bitmap bitmap : bitmaps) { if (isMultiWidth) { height = height + bitmap.getHeight() * width / bitmap.getWidth(); } else { height = height + bitmap.getHeight(); } } //创建图纸 Bitmap newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); //创建画布,并绑定图纸 Canvas canvas = new Canvas(newBitmap); int tempHeight = 0; //画图 for (int i = 0; i < bitmaps.length; i++) { if (isMultiWidth) { if (width != bitmaps[i].getWidth()) { int newSizeH = bitmaps[i].getHeight() * width / bitmaps[i].getWidth(); Bitmap newSizeBmp = resizeBitmap(bitmaps[i], width, newSizeH); canvas.drawBitmap(newSizeBmp, 0, tempHeight, null); tempHeight = tempHeight + newSizeH; newSizeBmp.recycle(); } else { canvas.drawBitmap(bitmaps[i], 0, tempHeight, null); tempHeight = tempHeight + bitmaps[i].getHeight(); } } else { canvas.drawBitmap(bitmaps[i], 0, tempHeight, null); tempHeight = tempHeight + bitmaps[i].getHeight(); } bitmaps[i].recycle(); } return newBitmap; }
public static Bitmap resizeBitmap(Bitmap bitmap, int newWidth, int newHeight) { float scaleWidth = ((float) newWidth) / bitmap.getWidth(); float scaleHeight = ((float) newHeight) / bitmap.getHeight(); Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); Bitmap bmpScale = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); return bmpScale; }