【zhao-utils】文档记录

zhao-utils

zhao-utils 是一个综合性的Java工具包集合,旨在为开发者提供一系列便捷高效的辅助工具,以简化常见的编程任务并提高开发效率。此库覆盖了多种应用场景,从基本的数据处理到复杂的图像操作,都提供了相应的解决方案。以下是 zhao-utils 中包含的主要工具包概述。

工具类名支持版本作用解释
top.lingyuzhao.utils.ASClassv1.0类处理工具包,能够处理类转换等请求,来自AS机器学习库中的部分工具包
top.lingyuzhao.utils.ASIOv1.0IO工具包,能够处理文件系统IO磁盘之间的请求,来自AS机器学习库中的部分工具包
top.lingyuzhao.utils.ASMathv1.0数学工具包,能够处理一些数学计算请求,来自AS机器学习库中的部分工具包
top.lingyuzhao.utils.ASStrv1.0字符串工具包,能够处理一些字符串转换和拆分的请求,来自AS机器学习库中的部分工具包
top.lingyuzhao.utils.IOUtilsv1.0IO工具包,能够处理IO数据流拷贝相关的请求。
top.lingyuzhao.utils.StrUtilsv1.0字符串工具包,能够处理字符串拆分之类的请求。
top.lingyuzhao.utils.RegularConstantv1.0.20230929正则常量库
top.lingyuzhao.utils.CacheUtilsv1.0.20240405缓存容器类,可以用来缓存数据在一定的时间内。
top.lingyuzhao.utils.PalettePngv1.0.20241025png 图像处理工具包,能够处理 png 图像的通道转换,支持调色板等操作.
top.lingyuzhao.utils.Palettev1.2.20241114png 图像处理工具包,能够处理 png 图像的通道转换,支持调色板等操作.

导入依赖


<dependency>
    <groupId>io.github.BeardedManZhao</groupId>
    <artifactId>zhao-utils</artifactId>
    <version>1.2.20241114</version>
    <!-- <scope>provided</scope>-->
</dependency>

查看文档

您可以前往 官网 中查看到一些工具类的 Java
使用文档!

更新日志

1.2.20241114

  • 移除了无用的 JsonUtils,移除了无用的 exe 目录初始化!
  • IOUtils 中新增了 initPath 函数,用于直接初始化一个路径。
  • 新增了 PaletteGenerator.LINEAR_GRADIENT 生成器,可以根据初始值和结束值,有针对性的生成线性渐变调色板。
package zhao.utils;

import top.lingyuzhao.utils.PaletteGenerator;
import top.lingyuzhao.utils.PalettePng;

import javax.imageio.ImageIO;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author zhao
 */
public class MAIN {
    public static void main(String[] args) throws IOException {
        try (final FileInputStream fileInputStream = new FileInputStream("C:\\Users\\zhao\\Downloads\\微信图片_20241113125600.png")) {
            // 设置线性生成器的起始的颜色 (如果不启用透明度支持,最后一个参数无关紧要)
            // (如果您更期望自己的图被转换之后 颜色是蓝色,那么您可以在第三个参数做调整,例如将第三个参数的起始数值调大,这样会更偏向蓝色)
            // (在此基础上,如果您期望图变更紫一点,还可以将第一个 red 通道的起始数值调大,这样整个调色板的所有颜色都将 偏蓝偏红 也就是偏紫)
            PaletteGenerator.LINEAR_GRADIENT.setStartColor((byte) 50, (byte) 0, (byte) 100, (byte) 255);
            // 设置线性生成器的终止颜色
            PaletteGenerator.LINEAR_GRADIENT.setEndColor((byte) 255, (byte) 255, (byte) 255, (byte) 255);
            // 将线性生成器装载到 RGB_8 模式中
            PalettePng.RGB_8.setPaletteGenerator(PaletteGenerator.LINEAR_GRADIENT);
            // 开始压缩操作!
            final ByteArrayOutputStream translate = PalettePng.RGB_8.translate(ImageIO.read(fileInputStream));
            try (final FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\zhao\\Downloads\\微1.png")) {
                fileOutputStream.write(translate.toByteArray());
            }
        }
    }
}

  • 对于调色板数据 支持缓存操作,可选择不同的调色板数据。
package zhao.utils;

import top.lingyuzhao.utils.PaletteGenerator;
import top.lingyuzhao.utils.PalettePng;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * @author zhao
 */
public class MAIN {
    public static void main(String[] args) throws IOException {
        try (final BufferedInputStream fileInputStream = new BufferedInputStream(Files.newInputStream(Paths.get("C:\\Users\\zhao\\Downloads\\微信图片_20241113125600.png")))) {
            // 将随机生成器装载到 RGB_8 模式中
            PalettePng.RGB_8.setPaletteGenerator(PaletteGenerator.RANDOM255);

            // 设置随机种子
            PaletteGenerator.RANDOM255.random.setSeed(20);
            // 将当前的调色板数据缓存 并起名为 a (这个时候会自动生成调色板数据)
            PalettePng.RGB_8.cache("a");

            // 清理调色板数据 修改随机种子(这能够生成不同的颜色) 并重新缓存一个新的调色板数据 起名为 b
            PalettePng.RGB_8.clearPalette();
            PaletteGenerator.RANDOM255.random.setSeed(4200);
            PalettePng.RGB_8.cache("b");

            // 获取到 图
            final BufferedImage read = ImageIO.read(fileInputStream);

            // 使用 a数据 进行压缩操作!
            PalettePng.RGB_8.useCache("a");
            final ByteArrayOutputStream translate = PalettePng.RGB_8.translate(read);
            try (final FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\zhao\\Downloads\\微1.png")) {
                fileOutputStream.write(translate.toByteArray());
            }

            // 使用 b数据 进行压缩操作
            PalettePng.RGB_8.useCache("b");
            final ByteArrayOutputStream translate1 = PalettePng.RGB_8.translate(read);
            try (final FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\zhao\\Downloads\\微2.png")) {
                fileOutputStream.write(translate1.toByteArray());
            }
        }
    }
}
  • 可以直接将调色板数据保存到本地,下次使用时直接读取。
package zhao.utils;

import top.lingyuzhao.utils.IOUtils;
import top.lingyuzhao.utils.Palette;
import top.lingyuzhao.utils.PaletteGenerator;
import top.lingyuzhao.utils.PalettePng;

import javax.imageio.ImageIO;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;

/**
 * @author zhao
 */
public class MAIN {
    public static void main(String[] args) throws IOException {
        try (final FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\zhao\\Downloads\\p1.palette")) {
            // 将随机生成器装载到 RGB_8 模式中
            PalettePng.RGB_8.setPaletteGenerator(PaletteGenerator.RANDOM255);

            // 设置随机种子
            PaletteGenerator.RANDOM255.random.setSeed(20);
            // 将当前的调色板数据缓存 并起名为 a (这个时候会自动生成调色板数据)
            PalettePng.RGB_8.cache("a");

            // 获取到调色板对象
            Palette palette = PalettePng.RGB_8.getCache("a");
            // 提取出调色板的 byte 数据
            final byte[] byteArray = palette.toByteArray();
            System.out.println(Arrays.toString(byteArray));
            // 关闭调色板对象
            palette.close();

            // 将数据输出到文件系统
            final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
            IOUtils.copy(byteArrayInputStream, fileOutputStream, true);
        }

        // 从文件系统读取出来
        try (final FileInputStream fileInputStream = new FileInputStream("C:\\Users\\zhao\\Downloads\\p1.palette")) {
            // 读取的时候 最后一个参数代表的是是否要支持透明
            final Palette palette = new Palette(fileInputStream, false);
            // 将调色板数据直接设置到 RGB_8 模式中
            PalettePng.RGB_8.setPalette(palette.getPalette());
        }

        // 开始使用我们从文件中读取到的调色板来压缩一个文件
        try (final BufferedInputStream bufferedInputStream = new BufferedInputStream(Files.newInputStream(Paths.get("C:\\Users\\zhao\\Downloads\\微信图片_20241113125600.png")))) {
            final ByteArrayOutputStream translate1 = PalettePng.RGB_8.translate(ImageIO.read(bufferedInputStream));
            try (final FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\zhao\\Downloads\\微2.png")) {
                fileOutputStream.write(translate1.toByteArray());
            }
        }
    }
}

1.2.20241113

  • 优化了调色板算法!加快生成调色板的生成算法计算速度。

1.2.20241112

  • 在 IO 工具包中添加了文件目录递归的函数,其可以直接处理文件夹下的所有文件。
  • 新增了 top.lingyuzhao.utils.PublicIpFetcher 可用于获取公网 IP 地址。

1.0.20241026

PalettePng 支持多种模式,且支持透明度等操作,支持了直接获取到图片缓存对象,而不必直接获取到数据流对象,本次更新相较于上一个版本无任何不兼容与副作用!

package zhao.utils;

import top.lingyuzhao.utils.PaletteGenerator;
import top.lingyuzhao.utils.PalettePng;

import javax.imageio.ImageIO;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * @author zhao
 */
public class MAIN {
    public static void main(String[] args) throws IOException {
        try (final FileInputStream fileInputStream = new FileInputStream("C:\\Users\\zhao\\Downloads\\图片3.png")) {
            // 清除调色板,因为我们要调整透明度,在这里执行后
            // 再次使用就会重新生成调色板(如果在这里之前没有初始化过调色板就不需要调用这个函数)
            PalettePng.RGB_8.clearPalette();
            // 设置调色板生成器 默认就是 X255 我们在这里更换为 RANDOM255
            PalettePng.RGB_8.setPaletteGenerator(PaletteGenerator.RANDOM255);
            // 设置支持透明度
            PalettePng.RGB_8.getPaletteGenerator().setTransparent(true);
            // 再次生成
            final ByteArrayOutputStream byteArrayOutputStream = PalettePng.RGB_8.translate(
                    ImageIO.read(fileInputStream)
            );
            byteArrayOutputStream.writeTo(Files.newOutputStream(Paths.get("C:\\Users\\zhao\\Downloads\\defimage211.svg.png")));
            byteArrayOutputStream.close();
        }
    }
}

1.0.20241025

此代码可以将一个 png 格式图片通道减少到 8 位。

package zhao.utils;

import top.lingyuzhao.utils.PalettePng;

import javax.imageio.ImageIO;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * @author zhao
 */
public class MAIN {
    public static void main(String[] args) throws IOException {
        try (final FileInputStream fileInputStream = new FileInputStream("C:\\Users\\zhao\\Downloads\\图片2.png")) {
            final long l = System.currentTimeMillis();
            // 这里是关键代码 开始处理操作
            final ByteArrayOutputStream byteArrayOutputStream = PalettePng.RGB_8.translate(
                    ImageIO.read(fileInputStream)
            );
            // 到这里处理操作结束
            System.out.println(System.currentTimeMillis() - l);
            byteArrayOutputStream.writeTo(Files.newOutputStream(Paths.get("C:\\Users\\zhao\\Downloads\\defimage21.svg.png")));
            byteArrayOutputStream.close();
        }
    }
}

1.0.20240612

  • 新增了字符转数值的函数

1.0.20240405

  • 新增了一个缓存工具类

1.0.20240315

  • 新增三个函数 在 StrUtils 中
escapeNewline
CamelToSnake
SnakeToCamel

1.0.20230929

正则表达式

  • 新增内置正则类,能够通过内置正则的方式获取到常用且通用的正则表达式的 Pattern 对象。
package zhao.utils;

import top.lingyuzhao.utils.RegularConstant;

import java.util.regex.Pattern;
import javax.imageio.ImageIO;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * @author zhao
 */
public class MAIN {
    public static void main(String[] args) {
        // 获取到 SQL 语法解析项
        final Pattern pSql = RegularConstant.SQL_EXTRACT.get();
        System.out.println(pSql);
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值