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");// 清理调色板数据 修改随机种子(这能够生成不同的颜色) 并重新缓存一个新的调色板数据 起名为 bPalettePng.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 我们在这里更换为 RANDOM255PalettePng.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);}
}