zhao-utils
zhao-utils 是一个综合性的Java工具包集合,旨在为开发者提供一系列便捷高效的辅助工具,以简化常见的编程任务并提高开发效率。此库覆盖了多种应用场景,从基本的数据处理到复杂的图像操作,都提供了相应的解决方案。以下是 zhao-utils 中包含的主要工具包概述。
| 工具类名 | 支持版本 | 作用解释 |
|---|---|---|
| top.lingyuzhao.utils.ASClass | v1.0 | 类处理工具包,能够处理类转换等请求,来自AS机器学习库中的部分工具包 |
| top.lingyuzhao.utils.ASIO | v1.0 | IO工具包,能够处理文件系统IO磁盘之间的请求,来自AS机器学习库中的部分工具包 |
| top.lingyuzhao.utils.ASMath | v1.0 | 数学工具包,能够处理一些数学计算请求,来自AS机器学习库中的部分工具包 |
| top.lingyuzhao.utils.ASStr | v1.0 | 字符串工具包,能够处理一些字符串转换和拆分的请求,来自AS机器学习库中的部分工具包 |
| top.lingyuzhao.utils.IOUtils | v1.0 | IO工具包,能够处理IO数据流拷贝相关的请求。 |
| top.lingyuzhao.utils.StrUtils | v1.0 | 字符串工具包,能够处理字符串拆分之类的请求。 |
| top.lingyuzhao.utils.RegularConstant | v1.0.20230929 | 正则常量库 |
| top.lingyuzhao.utils.CacheUtils | v1.0.20240405 | 缓存容器类,可以用来缓存数据在一定的时间内。 |
| top.lingyuzhao.utils.PalettePng | v1.0.20241025 | png 图像处理工具包,能够处理 png 图像的通道转换,支持调色板等操作. |
| top.lingyuzhao.utils.Palette | v1.2.20241114 | png 图像处理工具包,能够处理 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);
}
}

1280

被折叠的 条评论
为什么被折叠?



