logo
0
0
WeChat Login

libacg-libjxl

JPEG XL 图像处理插件,为 LibACG 系统提供图像扫描和格式转换功能。

安装依赖

确保已安装 JPEG XL 工具链:

# Debian/Ubuntu apt install libjxl-tools # macOS brew install jxl

Stage 概览

本插件提供 2 个 Stage

Stage名称功能进度模式
scan图像扫描扫描指定路径下的图像文件ALWAYS
convertJPEG XL 转换将图像转换为 JPEG XL 格式BATCH

Stage 详细说明

1. libjxl_scan - 图像扫描

扫描指定目录或文件,查找支持的图像格式文件。

输入 (Input)

参数类型必填说明
input_pathslist[str]要扫描的路径列表(文件或目录)
params.pathstr扫描目录路径(input_paths 为空时使用)
params.recursivebool是否递归扫描子目录,默认 true
params.input_formatslist[str]限定的格式列表,如 ["jpg", "png"]
params.max_countint返回文件数量上限

支持的输入格式

.jpg, .jpeg, .png, .gif, .bmp, .tiff, .tif, .webp, .ppm, .pgm, .pbm

输出 (Output)

字段类型说明
output_pathslist[str]找到的图像文件路径列表
metadata.scanned_pathstr扫描的路径
metadata.found_countint找到的文件数量
metadata.recursivebool是否递归扫描
metadata.formatslist[str]使用的格式过滤器

2. libjxl_convert - JPEG XL 转换

将图像文件批量转换为 JPEG XL 格式(使用 cjxl 命令)。

输入 (Input)

参数类型必填说明
input_pathslist[str]要转换的图像文件或目录路径
params.input_formatlist[str]限定的输入格式,如 ["jpg", "png"]
params.losslessbool无损压缩模式,默认 false
params.distancefloat距离压缩级别 (0-15),默认 1,与 quality 互斥
params.qualityint质量参数 (0-100),与 distance 互斥
params.effortint压缩努力程度 1-10,默认 7
params.max_widthint最大输出宽度(像素)
params.max_heightint最大输出高度(像素)

支持的输入格式

.jpg, .jpeg, .png, .gif, .bmp, .tiff, .tif, .webp, .ppm, .pgm, .pbm

输出 (Output)

字段类型说明
output_pathslist[str]转换后的 .jxl 文件路径列表
metadata.convertedint成功转换的文件数量
metadata.totalint总共要处理的文件数量
metadata.effortint使用的压缩努力程度
metadata.losslessbool是否使用无损模式

示例 Job YAML

示例 1:基础扫描

扫描指定目录下的所有图像文件:

name: scan-images version: "1.0" stages: - name: libjxl.scan input_paths: - "/path/to/images" params: recursive: true

示例 2:扫描并限定格式

只扫描 JPG 和 PNG 文件,最多返回 100 个:

name: scan-jpg-png version: "1.0" stages: - name: libjxl.scan input_paths: - "/path/to/images" params: recursive: true input_formats: - jpg - jpeg - png max_count: 100

示例 3:批量转换为 JPEG XL(有损)

将目录下的所有图像转换为 JPEG XL,使用 distance=1 的压缩级别:

name: convert-to-jxl version: "1.0" stages: - name: libjxl.convert input_paths: - "/path/to/images" params: distance: 1 effort: 7

示例 4:批量转换为 JPEG XL(无损)

无损压缩转换:

name: convert-to-jxl-lossless version: "1.0" stages: - name: libjxl.convert input_paths: - "/path/to/images" params: lossless: true effort: 7

示例 5:扫描 + 转换(完整流程)

先扫描图像,再转换为 JPEG XL,并限制最大尺寸为 1920x1080:

name: scan-and-convert version: "1.0" stages: - name: libjxl.scan input_paths: - "/path/to/images" params: recursive: true input_formats: - jpg - png - webp - name: libjxl.convert input_paths_from: libjxl.scan params: distance: 2 effort: 5 max_width: 1920 max_height: 1080

示例 6:使用 quality 参数

使用质量参数代替 distance:

name: convert-with-quality version: "1.0" stages: - name: libjxl.convert input_paths: - "/path/to/images" params: quality: 95 effort: 7

Stage 串联说明

当一个 Stage 的输出需要作为下一个 Stage 的输入时,可以使用 input_paths_from 字段指定数据来源:

stages: - name: libjxl.scan # Stage 1: 扫描 id: scan_step input_paths: - "/path/to/images" - name: libjxl.convert # Stage 2: 转换 scan 的输出 input_paths_from: scan_step # 使用上一步的 output_paths params: distance: 1

About

No description, topics, or website provided.
Language
Python100%