先取出背景大小,顺序插入图片和文字即可,注意字体linux系统

public class ImageUtil {private static Logger logger = Logger.getLogger(FileUtils.class);public static HashMap<Object, Object> merge(List<byte[]> imgs, List<WordAnalysisModel> list) throws Exception {int dstHeight = 0;int dstWidth = 0;// 获取需要拼接的图片长度int len = imgs.size();// 判断长度是否大于0if (len < 1) {throw new Exception("合并图片失败");}File[] file = new File[len];BufferedImage[] images = new BufferedImage[len];ByteArrayInputStream byteArrayInputStream = null;int[][] ImageArrays;try {ImageArrays = new int[len][];for (int i = 0; i < len; i++) {try {byte[] bytes = imgs.get(i);byteArrayInputStream = new ByteArrayInputStream(bytes);images[i] = ImageIO.read(byteArrayInputStream);} catch (Exception e) {logger.error(ExceptionUtils.getFullStackTrace(e));return null;}int width = images[i].getWidth();int height = images[i].getHeight();// 从图片中读取RGB 像素ImageArrays[i] = new int[width * height];ImageArrays[i] = images[i].getRGB(0, 0, width, height, ImageArrays[i], 0, width);// 计算合并的宽度和高度dstWidth = dstWidth > width ? dstWidth : width;dstHeight += height+50;}} finally {if (byteArrayInputStream != null){byteArrayInputStream.close();}}if (dstHeight < 1) {throw new Exception("合并图片失败");}// 生成新图片ByteArrayOutputStream stream = null;try {BufferedImage imageNew = new BufferedImage(dstWidth, dstHeight, BufferedImage.TYPE_INT_RGB);Graphics2D graphics = imageNew.createGraphics();graphics.setColor(Color.white);graphics.setBackground(Color.white);graphics.fillRect(0,0,dstWidth,dstHeight);int height_i = 50;for (int i = 0; i < images.length; i++) {int width = images[i].getWidth();int height = images[i].getHeight();imageNew.setRGB(0, height_i, width, height, ImageArrays[i], 0, width);Graphics2D g = imageNew.createGraphics();g.setColor(Color.black);g.setBackground(Color.black);//Font font = TypefaceUtil.getFontDefaultSong(Font.BOLD, "宋体", 15);Font font = new Font("宋体",Font.BOLD, 15);g.setFont(font); //字体、字型、字号WordAnalysisModel wordAnalysisModel = list.get(i);g.drawString(wordAnalysisModel.getStr(),1,height_i -20); //画文字g.dispose();height_i += height+50;}stream = new ByteArrayOutputStream();Long aLong = null;try {// 设置图片的格式ImageIO.write(imageNew, "jpg", stream);int size = stream.size();aLong = Long.valueOf(size);} catch (IOException e) {throw new Exception("合并图片失败");}byte[] bytes = stream.toByteArray();//byte[] bytes = Base64.encodeBase64();HashMap<Object, Object> map = new HashMap<>();map.put("length",aLong);map.put("bytes",bytes);return map;} finally {if (stream != null){stream.close();}}}
}

效果图

多张图片合并一张图片,在中间添加文字相关推荐

  1. Windows10 把两张图片合并成一张图片

    Windows10把两张图片合并成一张图片 文章目录 Windows10把两张图片合并成一张图片 1. 背景 2. "画图"实现多图拼接 1. 背景 相比截图功能,在 Google ...

  2. 练习 | 01 | 把多张图片合并成一张图片

    1 实现方式 1.1 第一种方案 import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.F ...

  3. OpenCV将两图片进行混合,达到两张图片合并成一张图片的效果

    1.概述 案例:将两张图片混合成一张图片,并且原图的元素要保留到同一张图片中. 2.示例图片 2.1.混合后的图片 2.2.原始的两张图片 3.示例代码 //将两张图片进行混合 #include &l ...

  4. android将两张图片合并为一张图片

    合成两张图片 通过canvas绘制合成 private Bitmap mergeBitmap(Bitmap firstBitmap, Bitmap secondBitmap) {int w1 = fi ...

  5. uniapp怎么使用canvas把两张图片合并成一张图片

    首先,在你的 vue 组件中引入 uni-canvas: <template><view class="canvas-container"><uni- ...

  6. cocos2dx-js RenderTexture 将多张图片合并成一张图片

    var sprite = new cc.Sprite("about_btn.png");var sprite2 = new cc.Sprite("add5.png&quo ...

  7. chatgpt赋能Python-python2张图片合成1张图片

    Python 图片合成:将两张图片组合成一张图片 介绍 图片合成是一种将两张或多张图片组合在一起形成一张新图片的技术.在设计和摄影领域中,图片合成是非常常见的技术,可以创造出丰富多彩的视觉效果. Py ...

  8. java 图片合成pdf_java将多张图片合并转为PDF

    所需jar包:com.lowagie.text package weaver.gy.util; import java.awt.image.BufferedImage; import java.io. ...

  9. 如何把多张图片合并成一个PDF?

    很多张图片想要合并成一个PDF文档要怎么操作呢?是不是先将图片分别转换成一个个PDF文档,然后再合并?不不不,其实我们可以一次性批量将图片合并成一个PDF哦~ 不收费!不收费!不收费! 手把手简易教程 ...

最新文章

  1. 深入理解Java注解Annotation之注解处理器
  2. LibreOJ 6279 数列分块入门 3(分块+排序)
  3. SpringBoot------集成MyBatis报错
  4. Xshell:Xshell的简介、安装、使用方法之详细攻略
  5. java个人介绍代码_个人项目WC(Java)
  6. 牛客多校6 - Binary Vector(组合数学+推公式)
  7. python学习-函数(定义、可变参、小练习(列表最小值函数))
  8. Magicodes.IE之快速导出Excel
  9. 理解transformer
  10. [转载]理解OAuth 2.0
  11. webhooks_在本地开发时如何测试Webhooks
  12. Python爬虫_HTTP标准
  13. rk3288对于parameter参数文件的解析处理【转】
  14. php strpbrk,PHP 字符串
  15. matlab fprintf_工程优化设计与Matlab实现——十进制编码遗传算法
  16. 漏洞 立即留言_ASPCMS留言板漏洞注入一句话木马插入数据库及修复方法
  17. 剑指Offer_编程题(用两个栈实现队列/旋转数组的最小数字(O(n) + 二分O(lgn))/斐波那契数列/跳台阶)
  18. 光猫DNS服务器未响应,有光纤猫了还要猫吗?
  19. 【杂七杂八】excel中根据RTL信号位宽生成拼接取位
  20. matlab cody学习笔记 day18

热门文章

  1. 2019秋招阅文数据分析:sql查询连续天数
  2. 解决华硕飞行堡垒8开机蓝屏问题
  3. 中国天眼新发现登Nature封面:恒星形成速度比我们想象快10倍
  4. 分享一开源的闭环步进电机控制器
  5. 安科瑞数据中心EMS 系统解决方案
  6. 使用 * 打印等腰三角形
  7. labview由于其他对话正在访问FIFO_Windows内核逻辑漏洞:IO管理器访问模式不匹配...
  8. Django 数据库连接使用
  9. k8s开启IPVS模式
  10. ios共享账号公众号_家人公众号和共享相册