吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3250|回复: 17
收起左侧

[Java 转载] 工作证,java实现

[复制链接]
奔跑的蜗牛119 发表于 2020-12-1 17:47
本帖最后由 奔跑的蜗牛119 于 2020-12-1 22:53 编辑

日常在论坛摸鱼,看到了好玩的帖子打工人苦,有女朋友的打工人更苦!要替女朋友做几百个工作证!没有python真的不行!,闲来无事,尝试下用Java hutool 工具包来实现一下。

导入主要依赖

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-poi</artifactId>
            <version>5.5.1</version>
        </dependency>

上代码(对excel表格标题做了下处理,改成了英文 name、depart、job。)

package com.sun;

import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;

import java.awt.*;
import java.io.File;
import java.util.Arrays;
import java.util.List;

/**
 * @ClassName: image
 */
public class Iimage {
    private static void addText(File copyFile, String text, int y){
        ImgUtil.pressText(
                copyFile,
                copyFile,
                text, Color.black,
                //字体
                new Font("黑体", Font.BOLD, 50),
                //x坐标修正值。 默认在中间,偏移量相对于中间偏移
                50,
                //y坐标修正值。 默认在中间,偏移量相对于中间偏移
                y,
                //透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
                1f
        );
    }
    private static void addPic(File copyFile, File file){
        ImgUtil.pressImage(
                copyFile,
                copyFile,
                //水印图片
                ImgUtil.read(file),
                //x坐标修正值。 默认在中间,偏移量相对于中间偏移
                5,
                //y坐标修正值。 默认在中间,偏移量相对于中间偏移
                -220,
                1f
        );
    }

    public static void main(String[] args) {
        //读取照片列表
        List<File> files = Arrays.asList(FileUtil.ls("D:\\idm下载\\Compressed\\photos\\工作证照片"));
        //读取人员信息
        ExcelReader reader = ExcelUtil.getReader("D:\\idm下载\\Compressed\\photos\\工作证信息.xlsx");
        List<ExcelEmp> excelEmp = reader.readAll(ExcelEmp.class);
        //填充数据
        for (int i = 0; i < excelEmp.size(); i++) {
            ExcelEmp emp = excelEmp.get(i);
            File copyFile = FileUtil.copy("D:\\idm下载\\Compressed\\photos\\工作证.png", "D:\\idm下载\\Compressed\\photos\\" + emp.getName() + ".png", false);
            // 姓名
            addText(copyFile,emp.getName(),30);
            // 部门
            addText(copyFile,emp.getDepart(),130);
            // 工作
            addText(copyFile,emp.getJob(),220);
            // 照片
            addPic(copyFile,files.get(i));
        }
    }
}
class ExcelEmp{
    private String name;
    private String depart;
    private String job;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDepart() {
        return depart;
    }

    public void setDepart(String depart) {
        this.depart = depart;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }
}

后续优化:将照片文件存入map集合,通过get(姓名)方式获取图片

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
Coptis2020 + 1 谢谢@Thanks!
gaoyonggang66 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Canon 发表于 2020-12-1 18:19
如果能保证照片名称与excel里面的人名一致的话,可以把files处理为一个Map<String, File>,然后for里面根据人名在Map里面get
gaoyonggang66 发表于 2020-12-1 19:36
sqzh 发表于 2020-12-1 19:42
shengli917520 发表于 2020-12-1 19:43
为了女朋友学会很多技能
两只老虎 发表于 2020-12-1 19:46
爱情的力量是伟大的
huyifan311 发表于 2020-12-1 20:05
太专业了,小白看不懂啊
风逝998 发表于 2020-12-1 20:11
谢谢分享
wysyz 发表于 2020-12-1 20:17
非专业看不懂
Coptis2020 发表于 2020-12-1 20:55
顶起来,给需要的人!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表