# ImageMerge **Repository Path**: zhoulikai/ImageMerge ## Basic Information - **Project Name**: ImageMerge - **Description**: 图片合成库,应用于根据后台配置模板生成各种营销海报 - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-06-25 - **Last Updated**: 2020-12-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ImageMerge #### 介绍 图片合成库,应用于根据后台配置模板生成各种营销海报 #### 软件架构 - imageLib为图片合成Module - app为图片合成案例 #### 运行 1. ./gradlew clean 2. ./gradlew assembleDebug 3. adb install -r app/build/outputs/apk/debug/app-debug.apk #### 使用说明 - 创建所需要的不同类型的元素对象 ``` ImageElement imageElement = new ImageElement(imgUrl, true, imgLeft, imgTop, imgWidth, imgHeight, ImageElement.IMG_LOAD_TYPE_GLIDE, isWidthStandard); boolean imageResult = imageElement.generateElement(); ``` ``` TextElement textElement = new TextElement(text, fontSize, fontColor, textLeft, textTop, 0, textWidth, true, isBoldFont); boolean textResult = textElement.generateElement(); ``` ``` QRCodeImageElement qrCodeImageElement = new QRCodeImageElement("", qrCodeUrl, qrIconBitMap, true, qrCodeLeft, qrCodeTop, qrCodeWidth, qrCodeHeight); boolean qrCodeResult = qrCodeImageElement.generateElement(); ``` ``` AvatarElement avatarElement = new AvatarElement(headBitMap, avater, true, avatarX, avatarY, avatarWidth, avatarHeight, true); boolean avatarResult = avatarElement.generateElement(); ``` - 遍历将元素绘制到画布上去 ``` /** * 根据图片上Element合成图片 * * @param sourceBitmapWidth * @param sourceBitmapHeight * @param imageElements * @return */ private Bitmap mergeImageElement(int sourceBitmapWidth, int sourceBitmapHeight, List imageElements) { if (sourceBitmapHeight <= 0 || sourceBitmapWidth <= 0) { return null; } if (imageElements == null || imageElements.isEmpty()) { return null; } Bitmap shareBitmap = Bitmap.createBitmap(sourceBitmapWidth, sourceBitmapHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(shareBitmap); canvas.drawColor(Color.WHITE); for (IMergeImageElement mergeImageElement : imageElements) { if (mergeImageElement != null) { boolean result = mergeImageElement.mergeImage(canvas); if (!result) { return null; } } } return shareBitmap; } ```