Java图片编辑

简介: 知识相对简单,主要实现对图片的编辑,如添加文字,图片合并等。支持多文本、多图片,我是基于JDK1.8

一、基础类

import java.awt.*;

public class ImageText {

    //文字内容或图片路径
    private String text;

    //------------------文字属性-------------------
    //字体颜色和透明度
    private Color color;
    //字体和大小
    private Font font;

    //------------------图片属性-------------------
    //图片宽
    private int width;
    //图片高
    private int height;

    //------------------坐标属性-------------------
    //所在图片的x坐标
    private int x;
    //所在图片的y坐标
    private int y;

    //set和get部分省略

    public ImageText() {
    }

    //用于添加图片
    public ImageText(String text, Color color, Font font, int x, int y) {
        this.text = text;
        this.color = color;
        this.font = font;
        this.x = x;
        this.y = y;
    }
    //用于添加文本
    public ImageText(String text, int width, int height, int x, int y) {
        this.text = text;
        this.width = width;
        this.height = height;
        this.x = x;
        this.y = y;
    }
}

二、工具

    /**
     *
     * @param srcImgPath 源图片路径
     * @param targetImgPath 保存图片路径
     * @param strList 文字集合
     * @param imgList 图片集合
     */
    public static void writeImage1(String srcImgPath, String targetImgPath, List<ImageText> strList, List<ImageText> imgList){
        try (FileOutputStream outImgStream = new FileOutputStream(targetImgPath)){
            //读取原底片信息
            File srcImgFile = new File(srcImgPath);//得到文件
            BufferedImage srcImg = ImageIO.read(srcImgFile);//文件转化为图片
            int srcImgWidth = srcImg.getWidth();//获取图片的宽
            int srcImgHeight = srcImg.getHeight();//获取图片的高

            //添加文字
            BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
            Graphics2D g2d = bufImg.createGraphics();
            g2d.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
            for (ImageText strDTO : strList) {
                g2d.setColor(strDTO.getColor());                                  //根据图片的背景设置水印颜色
                g2d.setFont(strDTO.getFont());                                    //设置字体
                g2d.drawString(strDTO.getText(), strDTO.getX(), strDTO.getY());   //画出水印
            }
            //添加图片
            for (ImageText imgDTO : imgList) {
                BufferedImage img = ImageIO.read(new File(imgDTO.getText()));
                BufferedImage imgNew = new BufferedImage(imgDTO.getWidth(), imgDTO.getHeight(), BufferedImage.TYPE_INT_RGB);
                g2d.drawImage(img, imgDTO.getX(), imgDTO.getY(), imgNew.getWidth(), imgNew.getHeight(), null);
            }
            g2d.dispose();

            // 输出图片
            ImageIO.write(bufImg, "jpg", outImgStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

三、测试

public static void main(String[] args) {
        //=========================================自行发挥================================
        //自己真实的地址:(若是文件流,连同工具部分一同修改就好);
        String srcImgPath="C:\\Users\\levoe\\Desktop\\证件\\图片1.png";    //源图片地址
        String tarImgPath="C:\\Users\\levoe\\Desktop\\证件\\TEMP\\测试1.png";   //目标图片的地址
        //==============================================================================

        //获取数据集合
        List<ImageText> list = new ArrayList<>();
        list.add(new ImageText("测试文本内容",Color.BLACK,new Font("仿宋_GB2312", Font.PLAIN, 12), 6, 63));

        List<ImageText> imgList = new ArrayList<>();
        imgList.add(new ImageText("C:\\Users\\ZhiPengyu\\Desktop\\证件\\img1.jpg",35,44, 6, 16));

        //操作图片:
        writeImage1(srcImgPath, tarImgPath, list,imgList);
    }
相关文章
|
28天前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
59 4
|
7天前
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
49 6
|
28天前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
52 2
|
1月前
|
算法 Java Linux
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
这篇文章介绍了如何使用Java的Graphics2D类在图片上合成另一个照片,并将照片切割成圆形头像的方法。
47 1
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
|
28天前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
|
1月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
19 1
|
1月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
60 1
|
1月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
104 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
21天前
|
缓存 Java 程序员
Java|SpringBoot 项目开发时,让 FreeMarker 文件编辑后自动更新
在开发过程中,FreeMarker 文件编辑后,每次都需要重启应用才能看到效果,效率非常低下。通过一些配置后,可以让它们免重启自动更新。
23 0
|
1月前
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
39 0