有这样一张图片,需要修改图中的时间

实现思路:

先使用绘图工具将上图中的时间抹成白色。将图片加载到BufferedImage类,使用Graphics2D类对图片进行文字绘制,最后输出流,前端通过a标签访问即可完成下载。在我的电脑中,Arial字体样式和图片中的时间的字体样式一致,将项目部署到linux中后由于系统中没有该字体,需要先向linux中安装字体,安装方式见:
https://blog.csdn.net/wangxintong_1992/article/details/81194896

以下代码基于Springboot框架开发

@RequestMapping("generate")public void drawTextInImg(HttpServletResponse response, String startTime, String endTime) {String filePath = "/Users/yuho/Documents/IMG_7205.png";//String filePath = "/root/jars/IMG_7205.png";ImageIcon imgIcon = new ImageIcon(filePath);Image img = imgIcon.getImage();int width = img.getWidth(null);int height = img.getHeight(null);BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics2D g = bimage.createGraphics();g.setColor(getColor("#AF2222"));g.setBackground(Color.white);g.drawImage(img, 0, 0, null);//设置字体样式,风格,大小Font font = new Font("Arial", Font.PLAIN, 27);g.setFont(font);//以左上角为坐标轴原点,left为横坐标,top为纵坐标int left = 330;int top = 1079;//抗锯齿g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);//绘制开始时间g.drawString(startTime, left, top);//绘制结束时间g.drawString(endTime, left, top+65);//释放对象g.dispose();try {//BufferedImage 转 InputStreamByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();ImageOutputStream imageOutput = ImageIO.createImageOutputStream(byteArrayOutputStream);ImageIO.write(bimage, "png", imageOutput);InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());long length = imageOutput.length();//设置responseresponse.setContentType("image/png");response.setContentLength((int)length);response.setHeader("Content-Disposition","attachment;filename="+new String("license.png".getBytes("gbk"),"iso-8859-1"));//输出流byte[] bytes = new byte[1024];OutputStream outputStream = response.getOutputStream();long count = 0;while(count < length){int len = inputStream.read(bytes, 0, 1024);count +=len;outputStream.write(bytes, 0, len);}outputStream.flush();} catch (Exception e){e.printStackTrace();}}public static Color getColor(String color) {if (color.charAt(0) == '#') {color = color.substring(1);}if (color.length() != 6) {return null;}try {int r = Integer.parseInt(color.substring(0, 2), 16);int g = Integer.parseInt(color.substring(2, 4), 16);int b = Integer.parseInt(color.substring(4), 16);return new Color(r, g, b);} catch (NumberFormatException nfe) {return null;}}

使用Java在图片中添加文字相关推荐

  1. python文字教程-Python在图片中添加文字的两种方法

    本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...

  2. python怎么在图片上写字_Python在图片中添加文字的两种方法

    本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...

  3. python如何在图片上添加文字_Python在图片中添加文字的两种方法

    本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...

  4. 怎样在python的turtle中输入文字_Python在图片中添加文字的两种方法

    本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...

  5. 利用CSS在图片中添加文字

    前端项目中想要在图片中添加文字,方法有两种:1.js:2.css.第一种方法比较复杂,主要是写将图片与文字组合成新的图片的js代码,第二种方法简单粗暴,这里只讲第二种方法. 利用css在图片中添加文字 ...

  6. 如何在图片中添加文字

    如何在图片中添加文字 Delphi / Windows SDK/API http://www.delphi2007.net/DelphiMultimedia/html/delphi_200610201 ...

  7. 怎么在python中添加文字_Python在图片中添加文字的两种方法

    本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...

  8. Java实现添加文字水印、图片水印功能

    Java实现添加水印功能 添加水印 Java 2D API介绍 绘制文字水印 绘制图片水印 循环添加文字水印 添加水印 为图片添加水印的主要作用是保护图片版权,防止图片被未经授权的人使用或传播.为图片 ...

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

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

最新文章

  1. linux 查看剪贴板历史,Clipboard History Manager插件,查看浏览器剪贴板历史记录
  2. Oracle对数据的导出和导入,建立用户,删除用户以及其下的所有表
  3. python编程怎么建立工程_教你如何用Python脚本快速创建项目
  4. Android的数据存储
  5. 两大主流Web服务器之分析与对比
  6. 糟糕程序员的20个坏习惯
  7. TextBox获得焦点——客户端JavaScript
  8. 使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作
  9. c ++atoi函数_atoi()函数以及C ++中的示例
  10. java 反射类成员_java 反射(二)类成员
  11. [Python] L1-040. 最佳情侣身高差 团体程序设计天梯赛GPLT
  12. SQLServer数据库分页查询
  13. paip.c++ bcb string 转换操作大总结.
  14. 暴风影音CEO冯鑫的人生解读
  15. 中国移动互联网行业深度报告
  16. 全系列三极管应用参数和代换大全
  17. 家用台式计算机硬件配置清单,家用台式电脑配置清单
  18. 计算机组成原理(笔记)
  19. Python编程语言好学吗 怎么能学好Python开发
  20. error: redefinition of ‘xxx’问题的解决

热门文章

  1. web应用开发入门_Web应用程序监视入门
  2. 输出“A、B...Z、AA、AB...AZ、BA、BB...BZ.......”的结构
  3. 关于Win10已设置默认打开方式的清除方法
  4. IDEA连接mysql后,schemas中无表格
  5. 快递鸟 物流跟踪订阅 即时查询快递 预约取件(在线下单)
  6. 泰勒公式和麦克劳林公式
  7. 计算机多用户访问不同磁盘,Win7系统实现多账户独享不同盘符的方法
  8. JavaWeb全面知识总结之呕血三天精心整理
  9. 前端写出优雅的代码,融会贯通es6
  10. Cesium3Dtilesets 使用customShader的解读以及泛光效果示例