Java实现多图片和文字编辑成一张图片

吴子兰
• 阅读 169

Java实现多图片和文字编辑成一张图片

由于业务中需要将多张图片和自定义的文字用程序生成一张海报,所以今天写了一个公共的方法来处理多张图片拼接海报,相关文字贴入到图片中的问题!

1.准备素材--两张图片,一张背景图,一张需要覆盖到某个位置的图







2.编写图片重组方法

    1).设置图片大小

     设置图片大小的公共方法

[Java] 纯文本查看 复制代码
?

public static BufferedImage resizeImage(int x,int y,BufferedImage bfi){

    BufferedImage bufferedImage = new BufferedImage(x, y, BufferedImage.TYPE_INT_RGB);
    bufferedImage.getGraphics().drawImage(
            bfi.getScaledInstance(x, y, Image.SCALE_SMOOTH), 0, 0, null);
    return bufferedImage;

}

在重组方法中设置图片大小

[Java] 纯文本查看 复制代码
?

public static String overlapImage(){

    try {
        //设置图片大小
        BufferedImage background = resizeImage(618,1000, ImageIO.read(new File("这里是背景图片的路径!")));
        BufferedImage qrCode = resizeImage(150,150,ImageIO.read(new File("这里是插入二维码图片的路径!")));
         
    }catch (Exception e){
        e.printStackTrace();
    }
    return null;

}

2).在背景图片某个位置写入文字信息

    利用Graphics2D工具绘制,将文字写入到图片当中

[Java] 纯文本查看 复制代码
?

//在背景图片中添加入需要写入的信息,例如:欢迎大家使用我的淘宝返利机器人,居家必备,省钱购物专属小秘书!
String message01 = "欢迎大家使用我的淘宝返利机器人";
String message02 = "居家必备,省钱购物专属小秘书!";
Graphics2D g = background.createGraphics();
g.setColor(Color.white);
g.setFont(new Font("微软雅黑",Font.BOLD,20));
//这里将信息和信息对应的位置写入
g.drawString(message01,530 ,190);
g.drawString(message02,530 ,220);
g.dispose();
ImageIO.write(background, "jpg", new File("这里是一个输出图片的路径"));

3).在背景图中间插入其他图片信息

    最后在背景中添加二维码图片

[Java] 纯文本查看 复制代码
?

g.drawImage(qrCode, 700, 240, qrCode.getWidth(), qrCode.getHeight(), null);

3.编写main方法,调用,查看结果

  为了方便查看,最后代码为全部代码

[Java] 纯文本查看 复制代码
?

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;

/**

  • Created by zj on 2018/10/18.

*/
public class ImageReorganization {

public static void main(String[] args) {
    String backgroundPath = "D:\\test\\angelYan.jpg";
    String qrCodePath = "D:\\test\\qrcode.jpg";
    String message01 ="扫描下方二维码,欢迎大家添加我的淘宝返利机器人";
    String message02 = "居家必备,省钱购物专属小秘书!";
    String outPutPath="D:\\test\\end.jpg";
    overlapImage(backgroundPath,qrCodePath,message01,message02,outPutPath);
}

public static String overlapImage(String backgroundPath,String qrCodePath,String message01,String message02,String outPutPath){
    try {
        //设置图片大小

// BufferedImage background = resizeImage(618,1000, ImageIO.read(new File("这里是背景图片的路径!")));

        BufferedImage background = resizeImage(1000,618, ImageIO.read(new File(backgroundPath)));

// BufferedImage qrCode = resizeImage(150,150,ImageIO.read(new File("这里是插入二维码图片的路径!")));

        BufferedImage qrCode = resizeImage(150,150,ImageIO.read(new File(qrCodePath)));
        //在背景图片中添加入需要写入的信息,例如:扫描下方二维码,欢迎大家添加我的淘宝返利机器人,居家必备,省钱购物专属小秘书!
        //String message = "扫描下方二维码,欢迎大家添加我的淘宝返利机器人,居家必备,省钱购物专属小秘书!";
        Graphics2D g = background.createGraphics();
        g.setColor(Color.white);
        g.setFont(new Font("微软雅黑",Font.BOLD,20));
        g.drawString(message01,530 ,190);
        g.drawString(message02,530 ,220);
        //在背景图片上添加二维码图片
        g.drawImage(qrCode, 700, 240, qrCode.getWidth(), qrCode.getHeight(), null);
        g.dispose();

// ImageIO.write(background, "jpg", new File("这里是一个输出图片的路径"));

        ImageIO.write(background, "jpg", new File(outPutPath));
    }catch (Exception e){
        e.printStackTrace();
    }
    return null;
}

public static BufferedImage resizeImage(int x, int y, BufferedImage bfi){
    BufferedImage bufferedImage = new BufferedImage(x, y, BufferedImage.TYPE_INT_RGB);
    bufferedImage.getGraphics().drawImage(
            bfi.getScaledInstance(x, y, Image.SCALE_SMOOTH), 0, 0, null);
    return bufferedImage;
}

}

4.最后查看效果

生成的图片效果






点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java 代码生成分享海报,仅供参考
为了生成一个活动海报,不得不根据海报底图通过java代码手动生成一张海报(包含用户名,用户简介,商品图,商品价格,商品二维码宣传语等),通过千辛万苦后,终于画成功了,我强了但也秃了,这不是因为强而秃,而是我的同事告诉我,为什么不用通过网页htmlcss写出一张海报,然后java代码通过url保存为图片(?????)  我秃了
Karen110 Karen110
3年前
一篇文章教会你使用Python图片格式转换器并识别图片中的文字
在日常生活中,我们经常需要用到图片,我们都知道,图片的种类挺多的,在这里不一一列举。我们今天要完成就是一个图片转换器外加图片识别程序,废话不多说,直接就是淦!1.文字识别技术2.图片转换器一、文字识别技术首先介绍文字识别技术,就是读取图片之后然后把图片中的文字提取出来。1.打开百度开放平台进去之后咱们选择文字识别,可以看出,语音合成和图片识别的参数不一
Stella981 Stella981
3年前
SimpleRoundedImage
1.一张图片是如何显示在屏幕上的一张图片渲染到unity界面中的大致流程。!(https://oscimg.oschina.net/oscnet/af13e253634a4c3750d3954e773f2f1179e.png)<!more2.我们要做什么我们要做的就是在CP
Stella981 Stella981
3年前
CSS从大图中抠取小图完整教程(background
相信很多喜欢研究网页界面的童鞋都遇到过一个奇妙的现象:网页中很多图片素材被合成在一张图片上。起初小菜模仿网站的时候,经常遇到这个现象,那时候也不知道这时什么技术,人家的整张图片素材不会利用,只能用ps切图,切成单个的再用。。。其实,这是一个非常简单的技术,就是因为想象的太难了,才一直找不到问题的关键。要想实现CSS抠图,只需要用到一个属性:bac
Stella981 Stella981
3年前
Android 图片着色 Tint 详解
问题描述在app中可能存在一张图片只是因为颜色的不同而引入了多张图片资源的情况。比如一张右箭头的图片,有白色、灰色和黑色三种图片资源存在。所以我们可不可以只保留一张基础图片,在此图片基础上只是颜色改变的情况是否可以通过代码设置来动态修改呢?知识点概览:1\.setTint、setTintList:对drawable进行着色。
可莉 可莉
3年前
10 使用 OpenCV、Kafka 和 Spark 技术进行视频流分析
问题引起基于分布式计算框架Spark的室内防盗预警系统首先用摄像头录一段视频,存在电脑里,下载一个ffmpeg的软件对视频进行处理,处理成一张张图片,然后通过hadoop里边的一个文件系统叫做hdfs进行储存,之后进行分析。用spark将hdfs中存储的图片进行读取,调用opencv的人形识别算法将图片中有人形的图片识别出来,然后就代表屋子里进人了,
Wesley13 Wesley13
3年前
FancyMoves,一款精美的图片轮播插件,可用键盘左右键进行轮播
   本次给各位介绍的是一个名叫FancyMoves的JQuery图片轮播插件。您可以使用鼠标点击,甚至是使用键盘左右键来进行图片的切换操作。   特性介绍:   1.轻松的改变幻灯变的宽度。   2.轻易改变下一张展示图片的数量。   3.最后一张图片会循环回到第一张图片里。   4.嵌入了Fancy
Stella981 Stella981
3年前
Cocos Creator基础教程(12)—精灵变身
在CocosCreator中使用率最高的非精灵(Sprite)莫属了,在游戏中我们经常会遇到将一张图片替换成另一张图片的情况,或者是在不同状态时来回切换图片。实现这个功能对程序员同学来说并不难,但是!回头检视一下编写的代码,能否让美术、策划同学使用上吗?如果不能的话,相信这篇教程可能对你和你的伙伴有更多启发!1\.SpriteIndex组件
一次单据图片处理的优化实践 | 京东物流技术团队
1引言日常开发中接到这样的需求,上游系统请求获取一张A4单据用于仓库打印及展示,要求PNG图片格式,但是我们内部得到的单据格式为PDF,需要提取PDF文档的元素并生成一张PNG图片。目前已经有不少开源工具实现了这一功能,我们找了网上使用比较多的Apache
Python进阶者 Python进阶者
1年前
想在同一张图片上添加不同的文字,也就是一张图片上出现一个词
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python实战的问题,一起来看看吧。问题描述:上图中也是他的代码,没有文字的代码确实看着难受,而且还是手机拍出来的模糊照片,不是截图。其实他自己也发现了问题,但是不知道怎么修改
上海张律师 上海张律师
2星期前
如何实现组件截图 -- componentSnapshot
​HarmonyOS应用开发在我开发手里项目的过程中,遇到这么一个功能需求:即用户在完成一系列的学习并通过考试以后,要生成一张证书,这张证书的结构是:一个背景图,上面还有文字、其他图片等,文字和图片都是根据用户信息动态生成的,整个证书在显示的时候是通过St
吴子兰
吴子兰
Lv1
不期望被谁拯救,我们一起上岸。
文章
4
粉丝
0
获赞
0