java 生成根据图片内容生成图片包含格式有【png jepg GIF tiff wbmp】

生成图片代码 其中一种webp格式无法生成

需引入的maven包

        <dependency>
            <groupId>com.twelvemonkeys.imageio</groupId>
            <artifactId>imageio-tiff</artifactId>
            <version>3.3.2</version>
        </dependency>
import sun.font.FontDesignMetrics;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

/**
 * @author: cosmoswalker
 * @createDateTime: 2021-11-16 10:52:58
 * @program: test
 * @description:
 */
public class CreateImages {
    public static void main(String[] args) {
        
        create(BufferedImage.TYPE_INT_RGB, "PNG", "测试数据54545454545454545", "test");
        create(BufferedImage.TYPE_INT_RGB, "JPEG", "测试数据54545454545454545", "test");
        create(BufferedImage.TYPE_INT_RGB, "GIF", "测试数据54545454545454545", "test");
        create(BufferedImage.TYPE_INT_RGB, "tiff", "测试数据54545454545454545", "test");
        create(BufferedImage.TYPE_BYTE_BINARY, "WBMP", "测试数据54545454545454545", "test");
        //暂时无法生成
        //create(BufferedImage.TYPE_INT_RGB, "webp", "测试数据54545454545454545", "test");

    }

    public static void create(int type, String formatName, String content, String pictureName) {
        String property = System.getProperty("user.dir") + "/src/main/resources/img/";
        File file = new File(property);
        if (!file.exists()) {
            file.mkdirs();
        }

        try {
            //字体字号
            int fontSize = 15;
            //文字字体
            String fontFamily = "雅黑";
            //字体字形
            int style = Font.ROMAN_BASELINE;
            //获取字体在画布中的大小
            Font f = new Font(fontFamily, style, fontSize);
            FontMetrics fm = FontDesignMetrics.getMetrics(f);
            int fontWidth = fm.stringWidth(content);
            int fontHeight = fm.getHeight();

            //初始化画布大小,根据字体像素大小进行调整
            int width = fontWidth + (fontWidth >> 1);
            int height = fontHeight + (fontHeight >> 1);

            //初始化图片的大小和背景色
            BufferedImage bi = new BufferedImage(width, height, type);
            Graphics2D g2 = bi.createGraphics();
            g2.setColor(Color.WHITE);
            g2.fillRect(0, 0, width, height);

            //在画布上写入字体
            Font font = new Font(fontFamily, style, fontSize);
            g2.setFont(font);

            //字体颜色
            g2.setPaint(Color.black);
            g2.drawString(content, (width - fontWidth) >> 1, (height >> 1) + (fontHeight >> 2));
            g2.dispose();

            //输出图片
            ImageIO.write(bi, formatName, new File(property + pictureName + "." + formatName));
        } catch (IOException ie) {
            ie.printStackTrace();

        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值