JAVA:文字写入图片、图片插入图片

一、前言

在实际应用中,需要通过Java将目标信息写在图片上,生成小卡片。

二、实现

1.定义一个工具类,代码如下:

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

public class WenZi2Pic {
    public static void main(String[] args) {
        String modelPath = "D:\\368760.jpg";
        String sourcePath = "D:\\source1.png";
        String savePath = "D:\\result1.png";
        savePic("皮卡丘,你准备好与我并肩作战,共同征服这个世界了吗?",modelPath,sourcePath,savePath);
    }


    public static void savePic(String text,String modelPath,String sourcePath,String savePath){
        try {
            //新建图片或者导入模版图片
//            BufferedImage bufImage = createImage(100,200,1);
//            g.setColor(new Color(0xDCDCDC));
//            g.setColor(Color.WHITE);
//            g.fillRect(0,0,srcImgWidth,srcImgHeight);

            BufferedImage bufImage = ImageIO.read(new File(modelPath));

            BufferedImage imageNew = new BufferedImage(bufImage.getWidth(), bufImage.getHeight(), BufferedImage.TYPE_INT_RGB);
            Graphics2D g = imageNew.createGraphics();
            g.drawImage(bufImage, 0, 0, bufImage.getWidth(), bufImage.getHeight(), null);
            //字体的平滑处理
            g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

            //设置输出字体
            Font font = new Font("楷体", Font.BOLD, 50);
            g.setFont(font);
            g.setColor(Color.BLACK);
            //写字,注意:输入的坐标为第一个字左下角坐标
            g.drawString(text, 20, 500);
            //添加图片
            BufferedImage headImage = ImageIO.read(new File(sourcePath));
            g.drawImage(headImage,500, 600,null);
            g.dispose();
            //保存图片
            OutputStream fos = new FileOutputStream(savePath);
            ImageIO.write(imageNew, "png", fos);
            bufImage.flush();
            imageNew.flush();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }


    }

    /**
     * 新建图片
     *
     * @param width     图片宽
     * @param height    图片高
     * @param imageType 图片类型
     * @return 图片实体
     */
    private static BufferedImage createImage(int width, int height, int imageType) {
        // 新建图片
        return new BufferedImage(width, height, imageType);
    }

    /**
     * 绘制背景
     * @param image    画布
     * @param graphics 画笔
     * @param bgColor  背景颜色
     */
    private static void fillBackground(BufferedImage image, Graphics graphics, Color bgColor) {
        int width = image.getWidth();
        int height = image.getHeight();
        graphics.setClip(0, 0, width, height);
        // 设置画笔颜色
        graphics.setColor(bgColor);
        // 绘制背景
        graphics.fillRect(0, 0, width, height);
    }
}

三、代码呈现效果 

输入文字:

皮卡丘,你准备好与我并肩作战,共同征服这个世界了吗?

 输入图片:

背景图片:368760.jpg

待插入图片:source1.png

 输出图片:result1.png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值