Java画图 给图片底部添加文字标题

需求给图片底部添加文字编号

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.RenderingHints;

import java.awt.font.FontRenderContext;

import java.awt.geom.Rectangle2D;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

/**

* JAVA 画图(生成文字水印)

*

* @author 杰宝宝

*

*/

public class ImageUtil {

/**

* @param str

* 生产的图片文字

* @param oldPath

* 原图片保存路径

* @param newPath

* 新图片保存路径

* @param width

* 定义生成图片宽度

* @param height

* 定义生成图片高度

* @return

* @throws IOException

*/

public void create(String str, String oldPath, String newPath, int width, int height){

try {

File oldFile = new File(oldPath);

Image image = ImageIO.read(oldFile);

File file = new File(newPath);

BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics2D g2 = bi.createGraphics();

g2.setBackground(Color.WHITE);

g2.clearRect(0, 0, width, height);

g2.drawImage(image, 0, 0, width - 25, height - 25, null); //这里减去25是为了防止字和图重合

/** 设置生成图片的文字样式 * */

Font font = new Font("黑体", Font.BOLD, 25);

g2.setFont(font);

g2.setPaint(Color.BLACK);

/** 设置字体在图片中的位置 在这里是居中* */

FontRenderContext context = g2.getFontRenderContext();

Rectangle2D bounds = font.getStringBounds(str, context);

double x = (width - bounds.getWidth()) / 2;

//double y = (height - bounds.getHeight()) / 2; //Y轴居中

double y = (height - bounds.getHeight());

double ascent = -bounds.getY();

double baseY = y + ascent;

/** 防止生成的文字带有锯齿 * */

g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

/** 在图片上生成文字 * */

g2.drawString(str, (int) x, (int) baseY);

ImageIO.write(bi, "jpg", file);

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

try {

ImageUtil img = new ImageUtil();

img.create("编号:0011", "E:\\111.png", "E:\\222.png", 455, 455);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

原图:

image.png

生成后:

image.png

java在图片下方写文字_Java画图给图片底部添加文字标题相关推荐

  1. JAVA 画图 给图片底部添加文字标题

    此文是本人2018年写的一个小功能 后来不玩csdn了 很多人问问题我都没看到,对不住了各位!!! 建议直接使用image-combiner功能强大 https://gitee.com/dromara ...

  2. CAD画图完成后怎么添加文字内容

    在CAD制图工作中,我们常常需要给绘制的CAD图形添加上文字内容,以便于使CAD图纸详实详尽.那么在CAD画图完成后怎么添加文字内容呢?今天小编就和大家一起讨论一下.演示操作如下: 1.启动CAD看图 ...

  3. 视频添加文字用什么软件,视频添加文字怎么弄

    随着plog.vlog等视频形式的兴起,视频添加文字变得越来越流行.与其选择插入音频解说,还不如加文字来得生动有趣.那么,视频添加文字用什么软件?视频添加文字怎么弄?接下来,本文会教大家使用一款简单好 ...

  4. 【二维码的创建、底部添加文字以及文字乱码】

    首先引入maven依赖 依赖1 < dependency > < groupId>com.google.zxing< /groupId> < artifact ...

  5. java canvas添加图片上传_HTML5 canvas画图及图片上传服务器

    上一个教程中我们实现了使用html5 canvas来制作涂鸦画板的效果,在这个教程中,我们将讲解如何将画好的图片上传到服务器上. 最后的效果如下图,当点击"开始画图"按钮,将在ca ...

  6. java 图片服务器 上传_Java实现把图片上传到图片服务器(nginx+vsftp)

    前言: 在我另一篇笔记中已经记载了如何用nginx + vsftp搭建图片服务器(请参考nginx + vsftp搭建图片服务器),并且用vsftp的客户端工具filezilla测试过已经可用.但是在 ...

  7. 切换图片尝试写第一个js插件 图片轮播

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 最近在看怎么写js插件,实验写了一个简单的图片轮播插件 jqury.picPlay.js . 基本html框架为<div cl ...

  8. 网页怎么在图片上添加文字_抖音一天可见怎么添加文字-抖音一天可见添加文字文案方法介绍...

    抖音一天可见怎么添加文字?在抖音短视频app中,支持用户将自己的日常生活以日常一天可见的形式发布,那我们发布的一天可见视频,怎么添加文字文案呢,抖音一天可见怎么添加文字,下面就和小编一起来看看吧! 1 ...

  9. python图片隐写_机窝安全--LSB图片隐写

    人类能说识别大概1000万中颜色,而BMP等的三原色有从0x00~0xFF,也就是有256的3次方,大概是1600多万,也就是说人类大概有600万颜色无法识别,但是机器并不是通过像素识别,而是通过该像 ...

最新文章

  1. java 异或_Java之超级基础且实用的知识点
  2. Qt探秘——谈ui文件的用法
  3. [转]Linux awk 命令 说明
  4. C++自定义sobel求梯度
  5. 网络安全 攻击类型_网络攻击的类型| 网络安全
  6. 同学聚会 主持词_我主持freeCodeCamp聚会的三年来的成功和失败
  7. 千呼万唤始出来 ===Visual Studio Team System 2008 Team Suite 中文版 Out!!!
  8. 比特币支付优点是什么
  9. 面向对象的三个特点:封装、继承、多态
  10. 基于matlab的光伏电池通用数学模型,基于MATLAB的光伏电池通用数学模型.doc
  11. yii、yaf、ci等php框架性能对比
  12. 提高效率: Atom ,介绍几个实用插件,组合使用
  13. 中图分类法---- U 交通运输
  14. 知乎APP---案例分析
  15. android模拟器录制视频教程,畅玩安卓模拟器怎么录制视频?畅玩模拟器录制游戏视频图文教程...
  16. amd cpu排行_2019 CPU天梯图(intel和AMD CPU性能排行)
  17. FreeMarker生成word文档
  18. 计算机鼠标双击怎么,电脑鼠标双击没反应怎么办
  19. C++求球的面积与体积,公式一样输出结果不一样?
  20. 注册kaggle帐号及kaggle绑定手机收不到验证码的问题

热门文章

  1. 求高光谱图像相关系数矩阵
  2. 详解C++移动语义std::move()
  3. PIC模拟从入门到熟练系列之组会PPT20210906《Note of PIC》
  4. Scikit-Learn 与 TensorFlow 机器学习实用指南学习笔记 4 —— 数据探索与可视化、发现规律
  5. 计算机管理磁盘管理,如何打开磁盘管理?
  6. mariadb mysql版本对应_弹指神通MariaDB——MariaDB与MySQL各版本的区别
  7. ##(两个井号)和#(一个井号)都是什么意思C and C++ 2008-09-23 21:18:27 阅读1106 评论0 字号:大中小 订阅 .
  8. TRzCheckTree
  9. strhcr函数的使用简单示例
  10. SpringBoot 根据传参返回不同的内容