| | |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 安卓-支付宝画图 |
| | | * @param money |
| | | * @param orderNo |
| | | * @param time |
| | | * @param targetPath |
| | | * @return |
| | | * @throws IOException |
| | | */ |
| | | public static InputStream drawAlipayAndroid(BigDecimal money, String orderNo, String time) throws IOException { |
| | | String bgpic = "image/alipay/android.png"; |
| | | BufferedImage bgImage = ImageIO.read(ImageUtil.class.getClassLoader().getResourceAsStream(bgpic)); |
| | | |
| | | final BufferedImage targetImg = new BufferedImage(bgImage.getWidth(), bgImage.getHeight(), BufferedImage.TYPE_INT_RGB); |
| | | HashMap<Key, Object> mapH = new HashMap<Key, Object>(); |
| | | mapH.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);// 抗锯齿 (抗锯齿总开关) |
| | | mapH.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);// 文字抗锯齿 |
| | | |
| | | // 画 背景图片 |
| | | final Graphics2D g2d = targetImg.createGraphics(); |
| | | g2d.setRenderingHints(mapH); |
| | | g2d.drawImage(bgImage, 0, 0, bgImage.getWidth(), bgImage.getHeight(), null); |
| | | g2d.setBackground(Color.BLACK); |
| | | |
| | | // 字体 |
| | | String os = System.getProperty("os.name"); |
| | | String fontRob0to = "/usr/share/fonts/ROBOTO-REGULAR.TTF"; |
| | | String fontBahnschrift = "/usr/share/fonts/BAHNSCHRIFT.TTF"; |
| | | if (os.toLowerCase().startsWith("win")) { |
| | | fontRob0to = "D:/ROBOTO-REGULAR.TTF"; |
| | | fontBahnschrift = "D:/BAHNSCHRIFT.TTF"; |
| | | } |
| | | |
| | | // 字体大小 |
| | | Font font40 = null; |
| | | Font font42 = null; |
| | | Font font86 = null; |
| | | try { |
| | | font40 = Font.createFont(Font.PLAIN, new File(fontRob0to)).deriveFont(40.00f); |
| | | font42 = Font.createFont(Font.PLAIN, new File(fontBahnschrift)).deriveFont(42.00f); |
| | | font86 = Font.createFont(Font.PLAIN, new File(fontRob0to)).deriveFont(86.68f); |
| | | } catch (FontFormatException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | |
| | | /* 时间信息 */ |
| | | g2d.setFont(font42); |
| | | g2d.setColor(new Color(247, 247, 247)); |
| | | g2d.drawString(TimeUtil.formatHHMM_12H(new Date()), 134, 67); |
| | | |
| | | |
| | | /* 资金信息 */ |
| | | String moneyInfo = "+" + money.setScale(2); |
| | | // 计算长度 |
| | | FontMetrics fm = g2d.getFontMetrics(font86); |
| | | int textLength = fm.stringWidth(moneyInfo); |
| | | // 居中位置 |
| | | int x_money = (bgImage.getWidth() - textLength) / 2 ; |
| | | // 画金额 |
| | | g2d.setFont(font86); |
| | | g2d.setColor(new Color(51, 51, 51)); |
| | | g2d.drawString(moneyInfo, x_money, 420); |
| | | |
| | | |
| | | /* 创建时间信息 */ |
| | | FontMetrics fm2 = g2d.getFontMetrics(font40); |
| | | int l_time = fm2.stringWidth(time); |
| | | int x_time = bgImage.getWidth() - l_time -41 ; |
| | | g2d.setFont(font40); |
| | | g2d.setColor(new Color(51, 51, 51)); |
| | | g2d.drawString(time, x_time, 972); |
| | | |
| | | /* 创建时间信息 */ |
| | | int l_order = fm2.stringWidth(orderNo); |
| | | int x_order = bgImage.getWidth() - l_order -41 ; |
| | | g2d.setFont(font40); |
| | | g2d.setColor(new Color(51, 51, 51)); |
| | | g2d.drawString(orderNo, x_order, 1072); |
| | | g2d.dispose(); |
| | | |
| | | ByteArrayOutputStream aos = new ByteArrayOutputStream(); |
| | | ImageIO.write(targetImg, "png", aos); |
| | | |
| | | return new ByteArrayInputStream(aos.toByteArray()); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * IOS 支付宝画图 |
| | | * @param money |
| | | * @param orderNo |
| | | * @param time |
| | | * @param targetPath |
| | | * @return |
| | | * @throws IOException |
| | | */ |
| | | public static InputStream drawAlipayIOS(BigDecimal money, String orderNo, String time) |
| | | throws IOException { |
| | | String bgpic = "image/alipay/ios.png"; |
| | | BufferedImage bgImage = ImageIO.read(ImageUtil.class.getClassLoader().getResourceAsStream(bgpic)); |
| | | |
| | | final BufferedImage targetImg = new BufferedImage(bgImage.getWidth(), bgImage.getHeight(), |
| | | BufferedImage.TYPE_INT_RGB); |
| | | HashMap<Key, Object> mapH = new HashMap<Key, Object>(); |
| | | mapH.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);// 抗锯齿 (抗锯齿总开关) |
| | | mapH.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);// 文字抗锯齿 |
| | | |
| | | // 画 背景图片 |
| | | final Graphics2D g2d = targetImg.createGraphics(); |
| | | g2d.setRenderingHints(mapH); |
| | | g2d.drawImage(bgImage, 0, 0, bgImage.getWidth(), bgImage.getHeight(), null); |
| | | g2d.setBackground(Color.BLACK); |
| | | |
| | | // 字体 |
| | | String os = System.getProperty("os.name"); |
| | | String fontHeiTi = "/usr/share/fonts/AdobeHeiTiStd.otf"; |
| | | String fontSquare = "/usr/share/fonts/SquareHeitiStd.TTF"; |
| | | if (os.toLowerCase().startsWith("win")) { |
| | | fontHeiTi = "D:/AdobeHeiTiStd.otf"; |
| | | fontSquare = "D:/SquareHeitiStd.TTF"; |
| | | } |
| | | |
| | | // 字体大小 |
| | | Font font40 = null; |
| | | Font font44 = null; |
| | | Font font92 = null; |
| | | try { |
| | | font44 = Font.createFont(Font.PLAIN, new File(fontHeiTi)).deriveFont(44.18f); |
| | | font40 = Font.createFont(Font.PLAIN, new File(fontSquare)).deriveFont(40.00f); |
| | | font92 = Font.createFont(Font.PLAIN, new File(fontSquare)).deriveFont(92.03f); |
| | | } catch (FontFormatException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | /* 时间信息 */ |
| | | g2d.setFont(font44); |
| | | g2d.setColor(new Color(16, 16, 16)); |
| | | MyDrawString(TimeUtil.formatHHMM_12H(new Date()), 82, 82, font44, g2d); |
| | | |
| | | |
| | | /* 资金信息 */ |
| | | String moneyInfo = "+" + money.setScale(2); |
| | | // 计算长度 |
| | | FontMetrics fm = g2d.getFontMetrics(font92); |
| | | int textLength = fm.stringWidth(moneyInfo); |
| | | // 居中位置 |
| | | int x_money = (bgImage.getWidth() - textLength) / 2; |
| | | // 画金额 |
| | | g2d.setFont(font92); |
| | | g2d.setColor(new Color(51, 51, 51)); |
| | | g2d.drawString(moneyInfo, x_money, 480); |
| | | |
| | | /* 创建时间信息 */ |
| | | FontMetrics fm2 = g2d.getFontMetrics(font40); |
| | | int l_time = fm2.stringWidth(time); |
| | | int x_time = bgImage.getWidth() - l_time - 41; |
| | | g2d.setFont(font40); |
| | | g2d.setColor(new Color(51, 51, 51)); |
| | | g2d.drawString(time, x_time, 1052); |
| | | |
| | | /* 创建时间信息 */ |
| | | int l_order = fm2.stringWidth(orderNo); |
| | | int x_order = bgImage.getWidth() - l_order - 41; |
| | | g2d.setFont(font40); |
| | | g2d.setColor(new Color(51, 51, 51)); |
| | | g2d.drawString(orderNo, x_order, 1160); |
| | | |
| | | g2d.dispose(); |
| | | |
| | | ByteArrayOutputStream aos = new ByteArrayOutputStream(); |
| | | ImageIO.write(targetImg, "png", aos); |
| | | return new ByteArrayInputStream(aos.toByteArray()); |
| | | } |
| | | |
| | | public static void MyDrawString(String str,int x,int y, Font font40, Graphics2D g2d){ |
| | | int i = 0; |
| | | int x_next = x; |
| | | String tempStr= null; |
| | | while(str.length()>0) |
| | | { |
| | | tempStr=str.substring(0, 1); |
| | | str=str.substring(1, str.length()); |
| | | g2d.drawString(tempStr, x_next, y); |
| | | |
| | | if (i == 1) { |
| | | x_next += 3 + 22; |
| | | } else if (i == 2) { |
| | | x_next += 10; |
| | | } else { |
| | | x_next += 0 + 22; |
| | | } |
| | | i++; |
| | | } |
| | | } |
| | | |
| | | } |