package cn.com.goldenwater.dcproj.utils; import javax.imageio.ImageIO; import java.awt.*; import java.awt.font.FontRenderContext; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; public class AllRlationPersUtils { public static String overlapImage(String backgroundPath,String qrCodePath,String yrCodePath,String cName,String eName,String orgName,String duty,String idNm,String outPutPath){ try { //设置图片大小 // BufferedImage background = resizeImage(618,1000, ImageIO.read(new File("这里是背景图片的路径!"))); BufferedImage background = resizeImage(4869,7368, ImageIO.read(new File(backgroundPath))); // BufferedImage qrCode = resizeImage(150,150,ImageIO.read(new File("这里是插入二维码图片的路径!"))); BufferedImage qrCode = resizeImage(1200,1200,ImageIO.read(new File(qrCodePath))); BufferedImage yrCode = resizeImage(1755,2425,ImageIO.read(new File(yrCodePath))); //在背景图片中添加入需要写入的信息,例如:扫描下方二维码,欢迎大家添加我的淘宝返利机器人,居家必备,省钱购物专属小秘书! //String message = "扫描下方二维码,欢迎大家添加我的淘宝返利机器人,居家必备,省钱购物专属小秘书!"; FontRenderContext frc = new FontRenderContext(null, true, true); Font font = new Font("锐字云字库锐宋粗GB",Font.BOLD,230); Rectangle2D r2D = font.getStringBounds(cName, frc); int rWidth = (int) Math.round(r2D.getWidth()); int rX = (int) Math.round(r2D.getX()); Rectangle r = new Rectangle(0,0,4869,7368); int a = (r.width / 2) - (rWidth / 2) - rX; Graphics2D g = background.createGraphics(); g.setColor(Color.BLACK); g.setFont(font); g.drawString(cName, r.x + a, 4772); FontRenderContext frc1 = new FontRenderContext(null, true, true); Font font1 = new Font("锐字云字库锐宋粗GB",Font.BOLD,168); Rectangle2D r2D1 = font1.getStringBounds(eName, frc1); int rWidth1 = (int) Math.round(r2D1.getWidth()); int rX1 = (int) Math.round(r2D1.getX()); Rectangle r1 = new Rectangle(0,0,4869,7368); int a1 = (r1.width / 2) - (rWidth1 / 2) - rX1; g.setFont(font1); g.drawString(eName, r1.x + a1, 5000); g.setFont(new Font("锐字云字库锐宋粗GB",Font.BOLD,168)); g.drawString(orgName,1716 ,5446); g.setFont(new Font("锐字云字库锐宋粗GB",Font.BOLD,168)); g.drawString(duty,1716 ,5816); g.setFont(new Font("锐字云字库锐宋粗GB",Font.BOLD,168)); g.drawString(idNm,1716 ,6205); //在背景图片上添加二维码图片 g.drawImage(qrCode, 3450, 5184, qrCode.getWidth(), qrCode.getHeight(), null); g.drawImage(yrCode, 1545, 1970, yrCode.getWidth(), yrCode.getHeight(), null); g.dispose(); QRCodeUtil.mkdirs(outPutPath); ImageIO.write(background, "jpg", new File(outPutPath)); }catch (Exception e){ e.printStackTrace(); } return null; } public static String overlapImage1(String backgroundPath,String qrCodePath,String outPutPath){ try { //设置图片大小 BufferedImage background = resizeImage(4869,7368, ImageIO.read(new File(backgroundPath))); BufferedImage qrCode = resizeImage(1287,1287,ImageIO.read(new File(qrCodePath))); //在背景图片中添加入需要写入的信息,例如:扫描下方二维码,欢迎大家添加我的淘宝返利机器人,居家必备,省钱购物专属小秘书! //String message = "扫描下方二维码,欢迎大家添加我的淘宝返利机器人,居家必备,省钱购物专属小秘书!"; Graphics2D g = background.createGraphics(); //在背景图片上添加二维码图片 g.drawImage(qrCode, 1802, 2047, qrCode.getWidth(), qrCode.getHeight(), null); g.dispose(); ImageIO.write(background, "jpg", new File(outPutPath)); }catch (Exception e){ e.printStackTrace(); } return null; } public static String overlapImage2(String backgroundPath,String qrCodePath,String yrCodePath,String cName,String eName,String orgName,String duty,String idNm,String outPutPath){ try { //设置图片大小 // BufferedImage background = resizeImage(618,1000, ImageIO.read(new File("这里是背景图片的路径!"))); BufferedImage background = resizeImage(3319,2285, ImageIO.read(new File(backgroundPath))); // BufferedImage qrCode = resizeImage(150,150,ImageIO.read(new File("这里是插入二维码图片的路径!"))); BufferedImage qrCode = resizeImage(600,600,ImageIO.read(new File(qrCodePath))); BufferedImage yrCode = resizeImage(769,1055,ImageIO.read(new File(yrCodePath))); //在背景图片中添加入需要写入的信息,例如:扫描下方二维码,欢迎大家添加我的淘宝返利机器人,居家必备,省钱购物专属小秘书! //String message = "扫描下方二维码,欢迎大家添加我的淘宝返利机器人,居家必备,省钱购物专属小秘书!"; FontRenderContext frc = new FontRenderContext(null, true, true); Font font = new Font("锐字云字库锐宋粗GB",Font.BOLD,180); Rectangle2D r2D = font.getStringBounds(cName, frc); int rWidth = (int) Math.round(r2D.getWidth()); int rX = (int) Math.round(r2D.getX()); Rectangle r = new Rectangle(0,0,2400,7368); int a = (r.width / 2) - (rWidth / 2) - rX; Graphics2D g = background.createGraphics(); g.setColor(Color.BLACK); g.setFont(font); g.drawString(cName, r.x + a, 980); FontRenderContext frc1 = new FontRenderContext(null, true, true); Font font1 = new Font("锐字云字库锐宋粗GB",Font.BOLD,118); Rectangle2D r2D1 = font1.getStringBounds(eName, frc1); int rWidth1 = (int) Math.round(r2D1.getWidth()); int rX1 = (int) Math.round(r2D1.getX()); Rectangle r1 = new Rectangle(0,0,2400,7368); int a1 = (r1.width / 2) - (rWidth1 / 2) - rX1; g.setFont(font1); g.drawString(eName, r1.x + a1, 1130); g.setFont(new Font("锐字云字库锐宋粗GB",Font.BOLD,110)); g.drawString(orgName,1050 ,1410); g.setFont(new Font("锐字云字库锐宋粗GB",Font.BOLD,110)); g.drawString(duty,1050 ,1610); g.setFont(new Font("锐字云字库锐宋粗GB",Font.BOLD,95)); g.drawString(idNm,1050 ,1830); //在背景图片上添加二维码图片 g.drawImage(qrCode, 2544, 1375, qrCode.getWidth(), qrCode.getHeight(), null); g.drawImage(yrCode, 2430, 295, yrCode.getWidth(), yrCode.getHeight(), null); g.dispose(); // ImageIO.write(background, "jpg", new File("这里是一个输出图片的路径")); ImageIO.write(background, "jpg", new File(outPutPath)); //System.out.println(outPutPath); }catch (Exception e){ e.printStackTrace(); } return null; } public static String overlapImage3(String backgroundPath,String qrCodePath,String outPutPath){ try { //设置图片大小 // BufferedImage background = resizeImage(618,1000, ImageIO.read(new File("这里是背景图片的路径!"))); BufferedImage background = resizeImage(3319,2285, ImageIO.read(new File(backgroundPath))); // BufferedImage qrCode = resizeImage(150,150,ImageIO.read(new File("这里是插入二维码图片的路径!"))); BufferedImage qrCode = resizeImage(565,565,ImageIO.read(new File(qrCodePath))); //在背景图片中添加入需要写入的信息,例如:扫描下方二维码,欢迎大家添加我的淘宝返利机器人,居家必备,省钱购物专属小秘书! //String message = "扫描下方二维码,欢迎大家添加我的淘宝返利机器人,居家必备,省钱购物专属小秘书!"; Graphics2D g = background.createGraphics(); //在背景图片上添加二维码图片 g.drawImage(qrCode, 2530, 1145, qrCode.getWidth(), qrCode.getHeight(), null); g.dispose(); // ImageIO.write(background, "jpg", new File("这里是一个输出图片的路径")); ImageIO.write(background, "jpg", new File(outPutPath)); //System.out.println(outPutPath); }catch (Exception e){ e.printStackTrace(); } return null; } public static String getFiles(String path,String name) { String fileName = ""; File file = new File(path); // 如果这个路径是文件夹 if (file.isDirectory()) { // 获取路径下的所有文件 File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { File fl = files[i]; // 如果还是文件夹 递归获取里面的文件 文件夹 if (files[i].isDirectory()) { fileName = getFiles(files[i].getPath(),name); if(org.apache.commons.lang3.StringUtils.isNotEmpty(fileName)){ break; } } else { if(fl.getPath().contains(name)){ fileName = fl.getPath(); break; } } } } else { if(file.getPath().contains(name)){ fileName = file.getPath(); } } return fileName; } private static BufferedImage resizeImage(int x, int y, BufferedImage bfi){ BufferedImage bufferedImage = new BufferedImage(x, y, BufferedImage.TYPE_INT_RGB); bufferedImage.getGraphics().drawImage( bfi.getScaledInstance(x, y, Image.SCALE_SMOOTH), 0, 0, null); return bufferedImage; } }