在实际开发中,有时候会遇到操作图片的需求,比如说在已有的图片上添加文字,生成新的图片等需求,下面代码是我根据项目需求做的在图片上添加文字的功能:

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之图片添加文字相关推荐

  1. java 给图片添加文字

    java 给图片添加文字 最近开发中要实现给图片加文字功能,本打算用Jmagick实现的,可是中文出现乱码,没有找到解决办法,就用 最原始的方法实现了,如果随知道Jmagick图片解决中文乱码问题,可 ...

  2. java制作海报工具类,java操作图片贴图,java给图片添加文字,调整字体颜色大小间距

    工具类 java操作图片,给一个大图片贴小图片,给图片添加文字并调整文字颜色,大小,字体间距,把本地图片或者网络图片加载到缓冲区 主要方法: imageIoRead方法,把图片加载到缓冲区 merge ...

  3. JAVA 给图片添加文字水印

    水印操作有很多,例如:给图片添加文字.图片水印,给pdf文件添加水印,给文件加盖公章,这类需求还是时常会遇到的,今天就简单记录一下给图片添加文字水印的demo,仅供大家参考,后续会写别的情况的添加水印 ...

  4. Java给图片添加文字水印

    闲着没事,研究了下图片水印的事儿,图片水印虽然恶心,而且大大的影响了图片的美观,试想一下,一张美女的性感写真照,下方来了个大大的水印"XXXX所有",看着那猥琐的文字水印,是不是很 ...

  5. 手把手教你如何通过Java给图片添加文字和图片水印

    本文首发于个人网站 前言 最近工作上有个需求,动态生成一张图片,具体来说就是基于模版图片动态添加文字和图片(文字内容不同,图片数目不同),其中文字大小不全一样,且对位置有所要求. 本文将剖析多个技术方 ...

  6. Java给图片添加文字,水印,文件或者http图片地址,可消除文字锯齿

    记一次Java给图片添加水印方法 Java给图片在指定位置加水印的小工具, 可操作文件, 或者http地址图片,转base64或者直接输出都可 核心代码先贴出来 水印基本信息的一个封装 import ...

  7. 用Java给图片添加文字水印

    代码: public static void main(String[] args) throws IOException {Color color=new Color(255,0,0);Font f ...

  8. Java 图片添加文字或者logo水印(附代码) | Java工具类

    目录 前言 环境依赖 代码 总结 前言 本文提供java工具类,给图片添加文字或者logo图片的水印效果. 环境依赖 工具库maven依赖添加 <dependency><groupI ...

  9. Java分享--给图片添加文字水印(文字可旋转)

    这篇文章主要介绍了Java实现给图片添加文字水印,文字水印的方法,涉及java针对图片的读取.水印添加设置等相关操作技巧,需要的朋友可以参考下 . 很多时候项目中的图片需要一定的版权,就是人家拿出去用 ...

  10. android水印控件,Android图片添加文字水印并保存水印文字图片到指定文件

    Android图片添加文字水印并保存水印文字图片到指定文件package zhangphil.test;import android.graphics.Bitmap;import android.gr ...

最新文章

  1. 开发微信小程序,100 万开发者都离不开它
  2. 企业过快移向MBaaS很危险
  3. base64的c语言实现方法
  4. lombok插件:Data自动get/set方法, Slf4j实现Logger的调用
  5. 阿里云数据中台全新产品DataTrust聚焦企业数据安全保障
  6. 【Coursera】SecondWeek(2)
  7. 猪肉上的红章和蓝章有啥不同?| 今日趣图
  8. Linux桌面虚拟化技术KVM
  9. 超快语义分割 | PP-LiteSeg集速度快、精度高、易部署等优点于一身,必会模型!!!...
  10. 石墨烯 量子计算机,又是石墨烯,这次对量子计算机下手了
  11. Oracle 11g 表空间管理
  12. 快速集成Android实现下拉刷新上拉加载更多
  13. 51单片机——74HC573锁存器
  14. 微信开发者工具控制台空白问题解决方案
  15. Flask(python)恶补笔记
  16. HTML基础DW使用教程
  17. TrustZone技术简介
  18. 强化学习 V.S. 自然语言处理,计算机保研er应该选哪个?
  19. 基于QWebView开发的浏览器通过需要证书认证网站的方法
  20. PageHelper这种情况下有坑!注意别吃亏

热门文章

  1. 云计算机基础架构,云计算基础架构的解决方案
  2. 在线IDE~快速体验在线编程
  3. KDJ算法详解,比百度百科要详细
  4. 分析方法选讲期末复习脉络图---完结版
  5. SPSS篇—方差分析
  6. 计算机键盘上的tab键是什么键,电脑Tab键有什么用处
  7. 6 RFID的ISOIEC标准
  8. 13 款免费但好用到哭的项目管理工具
  9. SuperMap iClient3D for WebGL教程(特效)- 点光源
  10. opencv 颜色识别