| package com.matrix.component.tools; | 
|   | 
| import java.awt.*; | 
| import java.awt.image.BufferedImage; | 
| import java.io.FileNotFoundException; | 
| import java.io.IOException; | 
| import java.util.ArrayList; | 
| import java.util.List; | 
| import java.util.regex.Matcher; | 
| import java.util.regex.Pattern; | 
|   | 
| public class ImageUtil { | 
|   | 
|     public static void main(String[] args) throws Exception { | 
|   | 
|         // drawString(); | 
|          fonts(); | 
|         // System.out.println(4 % 2); | 
|   | 
|     } | 
|   | 
|     public static void drawString(BufferedImage bimg, ImageMerge imgMerger) throws IOException, FileNotFoundException { | 
|          | 
|         // 得到Graphics2D 对象 | 
|         Graphics2D g2d = (Graphics2D) bimg.getGraphics(); | 
|         g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); | 
|         // 设置颜色和画笔粗细57bec0 | 
|         g2d.setColor(toColorFromString(imgMerger.getColor())); | 
|         g2d.setFont(new Font(imgMerger.getFontFamily(), Font.ITALIC, imgMerger.getFontSize())); | 
|         // 绘制图案或文字 | 
|         // g2d.drawString("红星国际会展中心", 445, 630); | 
|         drawStringWithSpan(g2d, imgMerger.getText(), imgMerger.getX(), imgMerger.getY(), imgMerger.getWordSpacing()); | 
|          | 
|     } | 
|   | 
|     /** | 
|      * 绘制字符间距 | 
|      */ | 
|     private static void drawStringWithSpan(Graphics2D g2d, String text, int i, int y, int k) { | 
|         List<String> txtList = new ArrayList<>(); | 
|         // 匹配中英文 | 
|         String s = "\\d+.\\d+|\\w+|[\u4e00-\u9fa5]"; | 
|         Pattern pattern = Pattern.compile(s); | 
|         Matcher ma = pattern.matcher(text); | 
|   | 
|         while (ma.find()) { | 
|             txtList.add(ma.group()); | 
|         } | 
|         int x = i; | 
|         for (int m = 0; m < txtList.size(); m++) { | 
|             String target = txtList.get(m); | 
|             g2d.drawString(target, x, y); | 
|             // 没写一个字就增加一个间距,2个哦英文单词占用1个中文字符空间 | 
|             int b = (target.length() / 2) + (target.length() % 2); | 
|             x += b * (g2d.getFont().getSize() + k); | 
|         } | 
|   | 
|     } | 
|   | 
|     /** | 
|      * 小图片贴到大图片形成一张图(合成) | 
|      * @author:liuyc | 
|      * @throws IOException | 
|      * @time:2016年5月27日 下午5:51:20 | 
|      | 
|     public static final void overlapImage(ImageMerge imgMerge) throws IOException { | 
|         BufferedImage big = ImageIO.read(new File(imgMerge.getSrcPath())); | 
|         BufferedImage small = ImageIO.read(new File(imgMerge.getSmallPath())); | 
|         Graphics2D g = big.createGraphics(); | 
|         g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, imgMerge.getAlpha())); | 
|         g.drawImage(small, imgMerge.getX(), imgMerge.getY(), imgMerge.getWidth(), imgMerge.getHeight(), null); | 
|         g.dispose(); | 
|         ImageIO.write(big, imgMerge.getOutFilePath().split("\\.")[1], new File(imgMerge.getOutFilePath())); | 
|     } | 
|  */ | 
|     public static Color toColorFromString(String colorStr) { | 
|         Color color = new Color(Integer.parseInt(colorStr, 16)); | 
|         return color; | 
|     } | 
|   | 
|     public static void fonts() { | 
|         String[] fonts = GraphicsEnvironment // GraphicsEnvironment(抽象类) 图形环境类 | 
|                 .getLocalGraphicsEnvironment() // 获取本地图形环境 | 
|                 .getAvailableFontFamilyNames(); // 获取可用字体family名 | 
|   | 
|         int fontCount = 0; // 字体数统计 | 
|         for (String font : fonts) { | 
|             fontCount++; | 
|             System.out.println(font); | 
|         } | 
|         System.out.println("系统字体数:" + fontCount); | 
|     } | 
|   | 
| } |