提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
生成个人签名矩形(长方形/正方形)印章
前言
主要作用于电子签章生成的个人签名后续更新企业印章,本章主要生成个人印章
一、基于Rectangle2D 生成个人印章,Rectangle2D 介绍
Rectangle2D是Java中的一个抽象类,它是用于表示矩形的基类。它提供了一些方法和属性,用于描述和操作矩形的位置、大小和边界。
Rectangle2D类有两个具体的子类:Rectangle2D.Double和Rectangle2D.Float。这两个子类分别表示双精度和单精度浮点数的矩形。
Rectangle2D类提供了一些常用的方法,例如getX()和getY()用于获取矩形的左上角的坐标,getWidth()和getHeight()用于获取矩形的宽度和高度,contains()用于判断一个点是否在矩形内部,intersects()用于判断两个矩形是否相交等等。
通过使用Rectangle2D类,你可以方便地进行矩形的计算和操作
二、生成个人印章工具类
public class SealPictureUtil {
/**
* 长方形字体最大,大小
*/
public static int RECTANGLE_FONT_MAX_SIZE = 80;
/**
* 长方形字体最小,大小
*/
public static int RECTANGLE_FONT_MAIN_SIZE = 5;
/**
* 获取个人签名印章图片
*
* @param model
* @return
* @throws IOException
*/
public static String createPersonSignSealPicture(PersonSignSealPictureModel model) throws IOException {
// 创建一个透明背景的图片
BufferedImage image = new BufferedImage(model.getWidth(), model.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = image.createGraphics();
// 长方形做自适应,正方形写死
int fontSize;
if (model.getIsVerticalRow()) {
fontSize = model.getFontSize();
} else {
fontSize = RECTANGLE_FONT_MAX_SIZE;
// 自适应文字大小
while (fontSize >= RECTANGLE_FONT_MAIN_SIZE) {
Font font = new Font(model.getFontName(), model.getFontStyle(), fontSize);
FontRenderContext frc = g2d.getFontRenderContext();
Rectangle2D bounds = font.getStringBounds(model.getName(), frc);
int textWidth = (int) bounds.getWidth();
int textHeight = (int) bounds.getHeight();
if (model.getBorderWidth() > 0) {
if (textWidth + 2 * model.getBorderWidth() <= model.getWidth() && textHeight + 2 * model.getBorderWidth() <= model.getHeight()) {
break;
}