Java之图片添加文字
在实际开发中,有时候会遇到操作图片的需求,比如说在已有的图片上添加文字,生成新的图片等需求,下面代码是我根据项目需求做的在图片上添加文字的功能:
public class GenerateDynamicHealthImage {Log log = LogFactory.getLog(GenerateDynamicHealthImage.class);/*** 生成图片方法* @author WQ* @param inPath* @param outPath* @param content* @param img* @param font* @param start_point_x* @param start_point_y*/public void generateImage(String inPath, String outPath,String[][] content, Image img, Font font, int start_point_x,int start_point_y) {try {File file = new File(inPath);Image image = ImageIO.read(file);int height = image.getHeight(null);int width = image.getWidth(null);int text_x = 0;int text_y = 0;int img_x = 0;int img_y = 520;int line_y = 498;Color color = new Color(89, 89, 89);BufferedImage bufferedImage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);Graphics2D graphics = bufferedImage.createGraphics();//文字去锯齿graphics.drawImage(image, 0, 0, width, height, null);graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);graphics.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,RenderingHints.VALUE_STROKE_NORMALIZE);graphics.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);if (img != null) {graphics.setFont(font);text_x = start_point_x;text_y = start_point_y;for (int i = 0; i < content.length; i++) {String[] tempData = content[i];color = new Color(89, 89, 89);text_x = start_point_x;if (i == 1){text_y += 110;img_y += 140;} else if (i != 0 && i > 1){text_y += 100;img_y += 130;}line_y += 132;for (int j = 0; j < tempData.length; j++) {if (j == 1) {text_y += 50;color = new Color(171, 171, 171);graphics.drawLine(12, line_y, 750 - 12, line_y);} else if (j == 2) {text_x = width - 124;text_y -= 20;img_x = 50;if (tempData[2].equals("过高")){color = new Color(255, 80, 80);} else {color = new Color(71, 207, 162);}graphics.drawImage(img, img_x, img_y, null);}graphics.setColor(color);graphics.drawString(tempData[j], text_x, text_y);}}} else {System.out.println("构建数据的图片对象为空...");}FileOutputStream fileOutputStream = new FileOutputStream(outPath);ImageIO.write(bufferedImage, "png", fileOutputStream);System.out.println("图片添加文字完成" + width + "---" + height);fileOutputStream.flush();fileOutputStream.close();} catch (IOException e) {log.info("io exception :" + e);}}public static void main(String[] args) {Font font = new Font("微软雅黑", Font.PLAIN, 30);String inPath = "D:/TestGenerateImage/DynamicImage/testImage.png";String outPath = "D:/TestGenerateImage/DynamicImage/testImage1.png";/*String inPath = "D:/TestGenerateImage/DynamicImage/Test.jpg";String outPath = "D:/TestGenerateImage/DynamicImage/Test1.jpg";*/String[][] textConent = {{ "血压(非空腹) : 6.0mmol/L", "时间: 2017年9月16日 10:52", "正常" },{ "血压(非空腹) : 13.0mmol/L", "时间: 2017年9月16日 15:47", "过高" },{ "血压(非空腹) : 6.3mmol/L", "时间: 2017年9月16日 16:13", "正常" } ,{ "血压(非空腹) : 6.6mmol/L", "时间: 2017年9月17日 10:24", "正常" },{ "血压(非空腹) : 15.1mmol/L", "时间: 2017年9月17日 11:10", "过高" } };int x = 150;int y = 540;try {new GenerateDynamicHealthImage().generateImage(inPath, outPath,textConent, ImageIO.read(new File("D:/TestGenerateImage/testIcon1.png")), font, x, y);} catch (IOException e) {e.printStackTrace();}}}
添加文字前图片:
添加文字后图片:
这样就完成了图片添加文字的需求,当然,文字添加的位置要根据项目需求去做。
核心就是使用Graphics2D的drawString、drawImage、drawLine来完成文字、图片、分割线的添加
Java之图片添加文字相关推荐
- java 给图片添加文字
java 给图片添加文字 最近开发中要实现给图片加文字功能,本打算用Jmagick实现的,可是中文出现乱码,没有找到解决办法,就用 最原始的方法实现了,如果随知道Jmagick图片解决中文乱码问题,可 ...
- java制作海报工具类,java操作图片贴图,java给图片添加文字,调整字体颜色大小间距
工具类 java操作图片,给一个大图片贴小图片,给图片添加文字并调整文字颜色,大小,字体间距,把本地图片或者网络图片加载到缓冲区 主要方法: imageIoRead方法,把图片加载到缓冲区 merge ...
- JAVA 给图片添加文字水印
水印操作有很多,例如:给图片添加文字.图片水印,给pdf文件添加水印,给文件加盖公章,这类需求还是时常会遇到的,今天就简单记录一下给图片添加文字水印的demo,仅供大家参考,后续会写别的情况的添加水印 ...
- Java给图片添加文字水印
闲着没事,研究了下图片水印的事儿,图片水印虽然恶心,而且大大的影响了图片的美观,试想一下,一张美女的性感写真照,下方来了个大大的水印"XXXX所有",看着那猥琐的文字水印,是不是很 ...
- 手把手教你如何通过Java给图片添加文字和图片水印
本文首发于个人网站 前言 最近工作上有个需求,动态生成一张图片,具体来说就是基于模版图片动态添加文字和图片(文字内容不同,图片数目不同),其中文字大小不全一样,且对位置有所要求. 本文将剖析多个技术方 ...
- Java给图片添加文字,水印,文件或者http图片地址,可消除文字锯齿
记一次Java给图片添加水印方法 Java给图片在指定位置加水印的小工具, 可操作文件, 或者http地址图片,转base64或者直接输出都可 核心代码先贴出来 水印基本信息的一个封装 import ...
- 用Java给图片添加文字水印
代码: public static void main(String[] args) throws IOException {Color color=new Color(255,0,0);Font f ...
- Java 图片添加文字或者logo水印(附代码) | Java工具类
目录 前言 环境依赖 代码 总结 前言 本文提供java工具类,给图片添加文字或者logo图片的水印效果. 环境依赖 工具库maven依赖添加 <dependency><groupI ...
- Java分享--给图片添加文字水印(文字可旋转)
这篇文章主要介绍了Java实现给图片添加文字水印,文字水印的方法,涉及java针对图片的读取.水印添加设置等相关操作技巧,需要的朋友可以参考下 . 很多时候项目中的图片需要一定的版权,就是人家拿出去用 ...
- android水印控件,Android图片添加文字水印并保存水印文字图片到指定文件
Android图片添加文字水印并保存水印文字图片到指定文件package zhangphil.test;import android.graphics.Bitmap;import android.gr ...
最新文章
- 开发微信小程序,100 万开发者都离不开它
- 企业过快移向MBaaS很危险
- base64的c语言实现方法
- lombok插件:Data自动get/set方法, Slf4j实现Logger的调用
- 阿里云数据中台全新产品DataTrust聚焦企业数据安全保障
- 【Coursera】SecondWeek(2)
- 猪肉上的红章和蓝章有啥不同?| 今日趣图
- Linux桌面虚拟化技术KVM
- 超快语义分割 | PP-LiteSeg集速度快、精度高、易部署等优点于一身,必会模型!!!...
- 石墨烯 量子计算机,又是石墨烯,这次对量子计算机下手了
- Oracle 11g 表空间管理
- 快速集成Android实现下拉刷新上拉加载更多
- 51单片机——74HC573锁存器
- 微信开发者工具控制台空白问题解决方案
- Flask(python)恶补笔记
- HTML基础DW使用教程
- TrustZone技术简介
- 强化学习 V.S. 自然语言处理,计算机保研er应该选哪个?
- 基于QWebView开发的浏览器通过需要证书认证网站的方法
- PageHelper这种情况下有坑!注意别吃亏