在图片上直接添加文字

本文介绍了如何使用Java的ImageIO和BufferedImage类在图片上添加文本,包括设置字体、颜色和位置,以及处理可能出现的异常,如图片尺寸问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在图片上直接添加文字

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)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值