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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/15411.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

接口测试整体框架

接口测试 1. 接口 接口&#xff0c;也叫api&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;&#xff0c;接口&#xff08;Interface&#xff09;是指不同软件组件或系统之间进行交互的点。接口定义了组件之间如何通信&#xff0c;包括…

递归搜索与回溯算法

递归搜索与回溯算法 名词解释 递归 在解决⼀个规模为n的问题时&#xff0c;如果满⾜以下条件&#xff0c;我们可以使⽤递归来解决&#xff1a; a. 问题可以被划分为规模更⼩的⼦问题&#xff0c;并且这些⼦问题具有与原问题相同的解决⽅法。 b. 当我们知道规模更⼩的⼦问题&…

基于java+SpringBoot+Vue的中小型医院网站设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven mysql5.7或8.0等等组成&#x…

图神经网络研究综述(GNN),非常详细收藏我这一篇就够了!

图神经网络由于其在处理非欧空间数据和复杂特征方面的优势&#xff0c;受到广泛关注并应用于推荐系统、知识图谱、交通道路分析等场景。 大规模图结构的不规则性、节点特征的复杂性以及训练样本的依赖性给图神经网络模型的计算效率、内存管理以及分布式系统中的通信开销带来巨…

36.安卓逆向-壳-脱壳实战

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要盲目相信。第一…

办公耗材管理新纪元:系统化解企业挑战,助力高效运营

在当今竞争激烈的商业环境中&#xff0c;无论是大型企业还是中小型企业&#xff0c;办公耗材管理都是关乎企业运营效率与成本控制的关键环节。有效的办公耗材管理不仅能显著降低运营成本&#xff0c;还能提升整体工作效率&#xff0c;确保业务的顺畅进行。然而&#xff0c;许多…

2、 家庭网络发展现状

上一篇我们讲了了解家庭网络历史(https://blog.csdn.net/xld_hung/article/details/143639618?spm1001.2014.3001.5502),感兴趣的同学可以看对应的文章&#xff0c;本章我们主要讲家庭网络发展现状。 关于家庭网络发展现状&#xff0c;我们会从国内大户型和小户型的网络说起&…

时序论文20|ICLR20 可解释时间序列预测N-BEATS

论文标题&#xff1a;N-BEATS N EURAL BASIS EXPANSION ANALYSIS FOR INTERPRETABLE TIME SERIES FORECASTING 论文链接&#xff1a;https://arxiv.org/pdf/1905.10437.pdf 前言 为什么时间序列可解释很重要&#xff1f;时间序列的可解释性是确保模型预测结果可靠、透明且易…

hadoop_capacity-scheduler.xml

hadoop3.2.3capacity-scheduler.xml配置实例 <configuration><property><!-- 可以处于等待和运行状态的应用程序的最大数量 --><name>yarn.scheduler.capacity.maximum-applications</name><value>10000</value></property>&l…

小白必看:知识库搭建的详细拆解步骤

在当今信息爆炸的时代&#xff0c;企业知识库成为了企业积累、管理和分享知识的重要工具。对于初学者来说&#xff0c;搭建一个企业知识库可能看起来是一项复杂的任务&#xff0c;但通过以下步骤&#xff0c;即使是小白也能轻松上手。本文将详细拆解搭建企业知识库的步骤&#…

042 异步编排

文章目录 什么是异步Future异步编排1串行关系执行thenRunthenApplythenAcceptthenCompose 2聚合ANDthenCombinethenAcceptBothrunAfterBoth 3OR聚合applyToEiteracceptEitherrunAfterEither 4异常处理exceptionallywhenCompletehandle 异步开启1RunAsync:没有使用自定义线程池&…

【算法设计与分析】采用特征方程求解递归方程

文章目录 K阶常系数线性齐次递归方程K阶常系数线性【非】齐次递归方程例题例1&#xff1a;齐次无重根例2&#xff1a;齐次有重根例3&#xff1a;非齐次&#xff0c;g(n)是n的多项式例4&#xff1a;非齐次&#xff0c;g(n)是n的指数形式&#xff0c;a不是重根 练习其它求解递归方…

SAP ABAP开发学习——function alv复选框设置

1.关于报表复选框的创建 首先该报表要调用功能函数 这里参照SLIS_LAYOUT_ALV定义字段 参照来源 具体字段的定义 双击 双击这两个查看需要的字段 box_fieldname就是复选框 需要在内表定义需要的名称&#xff0c;这里使用‘BOX 相关内容完成

5.7 与 8.0 对相同文件的 LOAD DATA 语句结果不同

5.7 与 8.0 对相同文件的 LOAD DATA 语句结果不同 问题描述 某客户现场支持&#xff0c;由MySQL 5.7.21升级MySQL 8.0.25后&#xff0c;通过LOAD DATA导入文件&#xff0c;当同一会话连续导入不同的编码&#xff08;UTF8/GB18030&#xff09;文件时会出现乱码。数据库版本未升…

河南梦想城供配电项目-综合监控平台[智能运维+集中监控]

河南梦想城供配电项目-综合监控平台软件 可分为主机系统&#xff08;针对单个站房的实时监测&#xff09;和集中云平台&#xff08;针对多个站房的集中管理&#xff09;&#xff0c;可实现电气设备隐患预警&#xff0c;站房环境风险可控&#xff0c;系统与电力平台以IEC61850标…

每日计划-1114

完成 14. 最长公共前缀 #include <string> #include <vector>class Solution { public:string longestCommonPrefix(std::vector<std::string>& strs) {if (!strs.size()) {return "";}int length strs[0].size();int count strs.size();fo…

《深度学习》AlexNet网络

文章目录 1.AlexNet的网络架构2.示例&#xff1a;手写数字识别2.1 数据读取 学习目标&#xff1a; 知道AlexNet网络结构能够利用AlexNet完成图像分类 2012年&#xff0c;AlexNet横空出世&#xff0c;该模型的名字源于论⽂第⼀作者的姓名AlexKrizhevsky 。AlexNet使⽤了8层卷积…

嵌入式软件开发环境的搭建

1.ARM指令模拟器环境搭建 keil软件 KEIL是公司的名称&#xff0c;有时候也指KEIL公司的所有软件开发工具。2005年&#xff0c;Keil被ARM公司收购&#xff0c;成为 ARM的子公司之一。 MDK&#xff08;Microcontroller Development Kit&#xff09; &#xff0c;也称MDK-ARM、…

模型广场上线!一键开启免费体验

模型广场上新&#xff0c;多款模型任君挑选~ 限时免费体验&#xff01;快来开启你的AI创作之旅吧~ 01 comfyui 工作流 ComfyUI是一个基于Stable Diffusion开发的图形用户界面&#xff08;GUI&#xff09;&#xff0c;它将Stable Diffusion的流程拆分成节点&#xff0c;你能够…

Java的dto,和多表的调用

1理论 需求是新增菜品eg&#xff1a;菜名:豆腐脑&#xff1b;口味&#xff1a;甜口&#xff0c;咸口&#xff0c; 菜单表&#xff1a;dish&#xff1b;口味表dish_flavor&#xff1b; 1dto:数据传输对象 新建一个dishDto对象有两个表里的属性 2用到两个表&#xff0c;dish,d…