话不多说,直接贴代码吧。
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.font.FontRenderContext;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Calendar;
import java.util.UUID;
import javax.imageio.ImageIO;
import org.apache.commons.lang.StringUtils;
/**
* 勾画圆形公司章
*
* @author ldd
*/
public class DrawSeal {
//生成文件路径
public static final String FILE_PATH = "d:/";
private final static int WIDTH = 160;
private final static int HEIGHT = 110;
/**
* 画圆形章
* @param name1 章的名字
* @param name2 公司的名字
* @param numCode 公司的数字编码
* @param width
* @param height
* @return
*/
public static String drawCircularChapter(String name1, String name2, String numCode){
OutputStream out = null;
InputStream in = null;
//创建缓存
BufferedImage bufImg = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
//获得画布
Graphics2D gs = bufImg.createGraphics();
//设置颜色
gs.setColor(Color.WHITE);
//填充区域
gs.fillRect(0, 0, WIDTH, HEIGHT);
//设置画笔颜色
gs.setColor(new Color(204,41,41));
//画五角星
drawFiveStar(gs, WIDTH/2, (HEIGHT-10)/2, (HEIGHT-10)/6-3);
//设置画笔宽度
gs.setStroke(new BasicStroke(3));
//画圆形边框
gs.drawOval(2, 2, WIDTH-4, HEIGHT-10);
//设置字体
gs.setFont(new Font("宋体", Font.BOLD, 21));
// 画数据(合同专用章)
drawCenterMessage(gs, name1, WIDTH/2+2, (HEIGHT-10) * 4 / 5);
if (StringUtils.isNotEmpty(name2) && name2.length()>11) {
int len = name2.length();
int fontSize = 18;
switch (len) {
case 12:
fontSize = 20;
break;
case 13:
fontSize = 19;
break;
case 14:
fontSize = 19;
break;
case 15:
fontSize = 18;
break;
case 16:
fontSize = 17;
break;
case 17:
fontSize = 16;
break;
case 18:
fontSize = 15;
break;
case 19:
fontSize = 14;
break;
case 20:
fontSize = 14;
break;
case 21:
fontSize = 12;
break;
case 22:
fontSize = 12;
break;
case 23:
fontSize = 10;
break;
case 24:
fontSize = 10;
break;
case 25:
fontSize = 9;
break;
default :
fontSize = 18;
break;
}
//设置字体
gs.setFont(new Font("宋体", Font.PLAIN, fontSize));
}
//画上方的环形字
drawUpperMessage(gs, name2, WIDTH/2, (HEIGHT-10)/2, WIDTH/2-8, (HEIGHT-10)/2-8);
//设置字体
gs.setFont(new Font("宋体", Font.BOLD, 9));
//画下方的环形数字
drawBelowNumber(gs, numCode, WIDTH/2, (HEIGHT-10)/2, WIDTH/2-8, (HEIGHT-10)/2+8);
//释放此图形的上下文以及它使用的所有系统资源
gs.dispose();
//输出图片
try {
StringBuffer fileDir = new StringBuffer();
fileDir.append(Calendar.getInstance().get(Calendar.YEAR)).append(File.separator).append(Calendar.getInstance().get(Calendar.MONTH)+1).append(File.separator).a