当前位置: 首页 > news >正文

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 在Java中,获取输入内容可以通过多种方式实现,以下是三种常用的方式:Scanner、BufferedReader 和 Console 的具体代码示例
  • 51单片机.之 UART串口
  • JVM下篇:性能监控与调优篇-04-JVM运行时参数
  • MySQL场景测试题
  • 【wsl2】从C盘迁移到G盘
  • MySQL高阶练习题1- 寻找面试候选人
  • 网络编程(学习)2024.8.27
  • 书生大模型实战营闯关记录----第十一关:LMDeploy 量化部署进阶实践 KV cache量化部署,W4A16 模型量化和部署
  • 数字化转型中的数据应用:挑战、机遇与追赶之路
  • sql高并发如何解决
  • 【vue3】wangEditor 5在vue3中的使用
  • 基于my Batis优化图书管理系统(总)
  • 【搜索引擎】ElasticSearch 7.x版本
  • ACL基础笔记
  • ceph-rgw zipper的设计理念(1)
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【知识碎片】第三方登录弹窗效果
  • 345-反转字符串中的元音字母
  • CentOS 7 防火墙操作
  • ES6--对象的扩展
  • Fabric架构演变之路
  • Joomla 2.x, 3.x useful code cheatsheet
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 分类模型——Logistics Regression
  • 复习Javascript专题(四):js中的深浅拷贝
  • 关于字符编码你应该知道的事情
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 开源地图数据可视化库——mapnik
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 智能网联汽车信息安全
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​io --- 处理流的核心工具​
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #php的pecl工具#
  • ()、[]、{}、(())、[[]]命令替换
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (20050108)又读《平凡的世界》
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Oracle)SQL优化技巧(一):分页查询
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (含笔试题)深度解析数据在内存中的存储
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (十八)SpringBoot之发送QQ邮件
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .apk文件,IIS不支持下载解决
  • .net core 6 redis操作类
  • .NET Micro Framework 4.2 beta 源码探析
  • .net web项目 调用webService