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);
    }
相关文章
|
3月前
|
数据可视化 Java
Java语言使用DL4J实现图片分类
【6月更文挑战第14天】Java语言使用DL4J实现图片分类
78 3
|
28天前
|
Java
Java系列之 重命名文件/图片,renameTo() 方法的使用
这篇文章介绍了Java中File类的renameTo()方法,包括其使用方式、参数、返回值以及一些使用时的注意事项,并通过示例代码演示了如何使用该方法来重命名文件。
Java系列之 重命名文件/图片,renameTo() 方法的使用
|
16天前
|
数据采集 存储 前端开发
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
|
1月前
|
存储 安全 Java
"Java编码魔法:揭秘图片与文件的Base64神秘转换术,让数据在指尖跳跃!"
【8月更文挑战第16天】Base64编码在Java开发中常用于将二进制数据如图片转换为ASCII字符串以便传输。编码使用64个字符及等号填充,每3字节数据编码为4个字符。Java利用`java.util.Base64`类实现此功能:读取图片或文件为字节数组后进行编码。解码时将Base64字符串还原为字节数组并写入文件。需注意编码效率降低、不提供安全性及特殊字符兼容性等问题。掌握这些技巧有助于解决Web开发中的数据传输需求。
52 4
|
1月前
|
Java
Java 图片、文件 Base64 互转
Java 图片、文件 Base64 互转
28 0
|
1月前
|
Java
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
66 0
|
3月前
|
Java
用java 将 jb2 文件转图片的方法
用java 将 jb2 文件转图片的方法
32 1
|
3月前
|
Java 机器人 API
JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
38 9
|
3月前
|
Java
用java 将 jb2 文件转图片的方法
用java 将 jb2 文件转图片的方法
18 0
|
3月前
|
存储 Java
图片LSB隐写(java)
图片LSB隐写(java)