JAVA实现将文字合成到指定图片的指定位置(JAVA合成文本文字到图片文件:附font字体不生效解决办法)

实现效果如图:

代码如下:

参数s1,s2分别代表你想要合成到图片中的文字信息,如需多个可自行进行修改

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

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

/**
 * create By Jlm
 */

public class ImgBean{

    public static void ImgYin(String s1, String s2, String ImgName){
        try{
            File file = new File(ImgName);
            Image src = ImageIO.read(file);
            int wideth=src.getWidth(null);
            int height=src.getHeight(null);
            BufferedImage image=new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB);
            Graphics g=image.createGraphics();
            g.drawImage(src,0,0,wideth,height,null);
            //设置字体颜色
            g.setColor(Color.RED);
            //size字体大小
            g.setFont(new Font("STKaiti",Font.PLAIN,50));
            //wideth控制字体距离右侧边缘距离  height控制字体距离底部距离
            g.drawString(s1,wideth-600,height-400);
            g.drawString(s2,wideth-600,height-500);
            g.dispose();
            FileOutputStream out=new FileOutputStream(ImgName);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            encoder.encode(image);
            out.close();
        }
        catch(Exception e){
            System.out.println(e);
        }
    }

    public static void main(String[] args) {
        ImgYin("1111111","2222222","/Users/jianglinmao/Downloads/11.png");
    }
}

有的同学可能发现设置字体的时候可能不生效,目前博主已发现的原因为字体名称对应不上导致 

首先在你要进行合成操作的环境下执行如下代码,看看目前该环境已存在的字体有哪些,找到自己想要的字体对应的名称即可

import java.awt.*;

/**
 * Created by jlm on 2019/10/22.
 */
public class FontTest {
    public static void main(String[] args) {
        Font[] fonts = GraphicsEnvironment
                .getLocalGraphicsEnvironment().getAllFonts();
        for (Font f : fonts) {
            System.out.println("Name:" + f.getFontName());
        }
    }
}

在控制台寻找自己想要的字体的英文名称,再替换到new Font()的指定位置就可以了

比如红色圈出来的就是字体仿宋和黑体对应的名称,博主试过输入中文是不生效的。

如果不想在原图片文件上直接修改,而是想根据原文件图片,修改后生成新的文件图片,修改代码如下位置即可

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值