zhao.utils.MAIN Maven / Gradle / Ivy
The newest version!
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());
}
}
}
}