package com.astral.kendama.yoga.order.util;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class TextToImage {
public String Image( String contents) throws IOException {
String text = contents;
// 设置字体
int fontSize = 20;
text= text.replaceAll("<p>","")
.replaceAll("<strong>","")
.replaceAll("</strong>","")
.replaceAll(" ","")
.replaceAll("<br />","")
.replaceAll("<h3>","")
.replaceAll("</h3>","");
String[] textArr =text.split("</p>");
//@Value("${upload.path}")
String filePath="/tmp/yoga-upload/" ; // 要保存的图片路径
// String filePath="D:/yoga-upload/" ;
// 设置图片大小和背景色
int width = 1200;
int height = (fontSize+30)*textArr.length+1500;
Color bgColor = new Color(255, 255, 255);
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = image.createGraphics();
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
graphics.setPaint(bgColor);
graphics.fillRect(0, 0, width, height);
Color fontColor = new Color(0, 0, 0);
Font font = new Font("宋体", Font.BOLD, fontSize);
graphics.setColor(fontColor);
graphics.setFont(font);
// 将文字绘制到图片中
int x = 100;
int y = 100;
// graphics.drawString(textArr[0], x, y);
for (int i = 0; i < textArr.length; i++) {
//一行超过40个字符 做切分
if(textArr[i].length()>40){
int m = textArr[i].length()/40+1;
for(int n = 0;n < m ;n++){
if(n*40<textArr[i].length()) {
if((n + 1) * 40 <=textArr[i].length()) {
String textArrSpilt = textArr[i].substring(n * 40, (n + 1) * 40 );
graphics.drawString(textArrSpilt, x, y);
y = y + 30;
}
else {
String textArrSpilt = textArr[i].substring(n * 40);
graphics.drawString(textArrSpilt, x, y);
y = y + 30;
}
}
}
}
else {
graphics.drawString(textArr[i], x, y);
y=y+30;
}
}
// 生成新的文件名并保存图片到本地文件
String fileName = generateFileName();
File file = new File(filePath + fileName);
ImageIO.write(image, "png", file);
System.out.println("Image saved to: " + filePath + fileName);
return fileName;
}
private static String generateFileName() {
Date now = new Date();
now.getTime();
return "image_" + now.getTime() + ".png";
}
}
文字生成图片
最新推荐文章于 2024-07-22 14:15:06 发布