2 个版本
0.1.1 | 2023 年 10 月 9 日 |
---|---|
0.1.0 | 2023 年 10 月 9 日 |
#647 在 图像
4MB
266 行
snapcrop 🖼
简单的 CLI 工具,用于将大量图像裁剪到指定的分辨率或纵横比。
适用于机器学习任务的数据集准备。
图像将与指定的目标分辨率中最接近的纵横比相匹配,确保无扭曲。该工具在缩放过程中优先考虑图像的原始纵横比,并在裁剪时居中内容。此外,snapcrop 避免放大较小的图像,以保留其原始质量。
snapcrop 使用原始输入图像的哈希值来避免重新处理图像,允许增量重新运行到相同的输出目录(不尊重 --res 参数的变化,以避免打开图像并运行缩放逻辑以确定是否可以跳过)。
功能
- 根据指定的分辨率缩放和裁剪图像。
- 支持多种分辨率输入格式,从固定大小到范围。
- 通过进度条提供反馈。
- 使用 BLAKE3 哈希算法输出具有独特名称的裁剪图像。
- 使用 Lanczos3 卷积进行高质量重采样。
安装
包
cargo install snapcrop
Github
git clone https://github.com/functorism/snapcrop.git
cd snapcrop
cargo build --release
示例和参数
Crop all your images with snapping
Examples:
Crop images to SDXL training resolutions
snapcrop out --res 1024x1024,1152x896,896x1152,1216x832,832x1216,1344x768,768x1344,1536x640,640x1536
Crop images to the closest resolution of the provided 1:1 sizes
snapcrop out --res 1024,768,512
Crop images to the closest resolution of 1:1 aspect ratio between 512x512 and 1024x1024 with a step of 64
snapcrop out --res 512:1024:64
Crop images with a fixed width of 512 and a height between 1024 and 512 with a step of 64
snapcrop out --res 512:1024:64x512
Crop images to resolution in either orientation (512x768 and 768x512)
snapcrop out --res [512x768]
Combine freely
snapcrop out --res [512x768],1024,512:768:64x768:1024:32
Usage: snapcrop [OPTIONS] --res <RESOLUTIONS> <OUTPUT_PATH>
Arguments:
<OUTPUT_PATH>
Output dir path for images
Options:
--res <RESOLUTIONS>
List of resolutions
-i, --input-file <IMAGE_LIST_PATH>
File list path, stdin used otherwise
-l, --log <LOG_PATH>
Output debug info to log
-v, --verbose
Output debug info to stderr
-f, --format <IMAGE_FORMAT>
[default: png]
-h, --help
Print help (see a summary with '-h')
视觉示例
snapcrop squares --res 256
snapcrop landscape --res 256x128
snapcrop portrait --res 128x256
snapcrop mixed --res 256,[128x256]
snapcrop steps --res [128:256:8x128:256:8]
依赖项
此 CLI 使用的主要库有
- fast_image_resize:用于缩放图像。
- image:用于处理不同的图像格式。
- indicatif:用于显示进度条。
- rayon:用于并行处理。
- clap:用于命令行参数解析。
- simplelog:用于日志记录。
- blake3:用于哈希图像内容。
依赖项
~20–29MB
~280K SLoC