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);
|
}
|
|
}
|