在图片上直接添加文字
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Util {
public static void main(String[] args) {
//模板路径
String filePath = "**/*.png";
//新图片路径
String outPath = "/**/*.png";
drawTextInImg(filePath,outPath, "app", "banan", "wqw", 10.0f);
}
public static void drawTextInImg(String filePath, String outPath, String name, String time, String address,float fsize) {
ImageIcon imgIcon = new ImageIcon(filePath);
Image img = imgIcon.getImage();
int width = img.getWidth(null);
int height = img.getHeight(null);
BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bimage.createGraphics();
int fontSize = (int)fsize;
Font font = new Font("宋体",Font.PLAIN, fontSize);
g.setBackground(Color.white);
g.drawImage(img, 0, 0, null);
g.setPaint(Color.black);
g.setFont(font);
g.drawString(name, 60, 100);
g.drawString(address, 60, 270);
g.setPaint(Color.Red);
g.drawString(time, 60, 200);
g.dispose();
try {
FileOutputStream out = new FileOutputStream(outPath);
ImageIO.write(bimage, "png", out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意 ⚠️
如果报错,可以将图片的大小改变一下或者改一下代码比例,太大,或太小都会报这个错误
Exception in thread "main" java.lang.IllegalArgumentException: Width (-1) and height (-1) cannot be <= 0
at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
at java.desktop/java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
at cn.stylefeng.guns.modular.jk.mapper.ces.drawTextInImg(ces.java:106)
at cn.stylefeng.guns.modular.jk.mapper.ces.main(ces.java:96)