import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import org.apache.log4j.Logger; /** * 圖片合成工具類 * */ public class PictureSynthesisUtil { private static Logger logger = Logger.getLogger(PictureSynthesisUtil.class); /** * 簽名合成,圖片坐標系左上角為(0,0) * * @param imgPath 圖片路徑 * @param signaturePath 簽名圖片路徑 * @param outFilePath 合成后圖片路徑 * @param xPlace 簽名圖片放置的x坐標 * @param yPlace 簽名圖片放置的y坐標 * @return 是否合成成功 * @throws IOException */ public static Boolean signatureSynthesis(String imgPath, String signaturePath, String outFilePath, int xPlace, int yPlace) throws Exception { logger.info("進入簽名合成方法"); BufferedImage backImg = ImageIO.read(new File(imgPath)); BufferedImage signatureImg = ImageIO.read(new File(signaturePath)); File outFile = new File(outFilePath); // 假如目標路徑不存在,則新建該路徑 if (!outFile.getParentFile().exists()) { logger.info("合成后圖片目標路徑不存在,新建該路徑"); outFile.getParentFile().mkdirs(); } // 假如目標文件不存在,則新建該文件 if (!outFile.exists()) { logger.info("合成后圖片目標文件不存在,新建該文件"); outFile.createNewFile(); } Graphics2D backG = backImg.createGraphics(); logger.info("開始合成簽名"); backG.drawImage(signatureImg, xPlace, yPlace, signatureImg.getWidth(), signatureImg.getHeight(), null); backG.dispose(); ImageIO.write(backImg, "png", new File(outFilePath)); logger.info("合成簽名完成"); return true; } /** * 簽名合成,圖片坐標系左上角為(0,0) * * @param imgPath 圖片路徑 * @param signaturePath 簽名圖片路徑 * @param outFilePath 合成后圖片路徑 * @param xPlace 簽名圖片放置的x坐標 * @param yPlace 簽名圖片放置的y坐標 * @param signatureWidth 簽名圖片的寬 * @param signatureHeight 簽名圖片的高 * @return 是否合成成功 * @throws IOException */ public static Boolean signatureSynthesis(String imgPath, String signaturePath, String outFilePath, int xPlace, int yPlace,int signatureWidth,int signatureHeight ) throws Exception { logger.info("進入簽名合成方法"); BufferedImage backImg = ImageIO.read(new File(imgPath)); BufferedImage signatureImg = ImageIO.read(new File(signaturePath)); File outFile = new File(outFilePath); // 假如目標路徑不存在,則新建該路徑 if (!outFile.getParentFile().exists()) { logger.info("合成后圖片目標路徑不存在,新建該路徑"); outFile.getParentFile().mkdirs(); } // 假如目標文件不存在,則新建該文件 if (!outFile.exists()) { logger.info("合成后圖片目標文件不存在,新建該文件"); outFile.createNewFile(); } Graphics2D backG = backImg.createGraphics(); logger.info("開始合成簽名"); backG.drawImage(signatureImg, xPlace, yPlace, signatureWidth, signatureHeight, null); backG.dispose(); ImageIO.write(backImg, "png", new File(outFilePath)); logger.info("合成簽名完成"); return true; } /** * 獲取inputFilePath的后綴名,如:"e:/test.pptx"的后綴名為:"pptx" * * @param inputFilePath * @return */ public static String getPostfix(String inputFilePath) { return inputFilePath.substring(inputFilePath.lastIndexOf(".") + 1); } }
