# Requirement Specification / 需求规格说明

# image-compress

## Background / 背景

l-tool CLI 已有图片格式转换功能 (image convert)，现扩展图片压缩能力。用户需要能够压缩图片文件以减小文件大小，同时可控制压缩质量，这是图片处理中常见的需求。

## Goals / 目标

- [x] 实现图片压缩功能，支持 JPEG/PNG/WebP 等格式
- [x] 支持 quality 参数控制 JPEG 压缩质量 (0-100)
- [x] 支持 png-level 参数控制 PNG 压缩级别 (fast/default/best)

## Scope / 范围

### In Scope / 范围内

- JPEG 有损压缩，支持 quality 参数 (0-100)
- PNG 压缩，支持三种压缩级别 (fast/default/best)
- WebP 无损压缩
- 自动检测输入格式
- 自动生成输出文件名
- 可选指定输出路径和文件名

### Out of Scope / 范围外

- 批量图片压缩
- 图片尺寸调整
- WebP 有损压缩 (quality 参数)
- DDS 格式编码 (仅支持解码)

## Constraints / 约束条件

- 依赖 image crate 进行图片处理
- 输出文件不能覆盖已存在文件

## Acceptance Criteria / 验收标准

- [x] `l image compress photo.jpg --quality 80` 能正确压缩 JPEG 图片
- [x] `l image compress image.png --png-level best` 能使用最佳压缩级别压缩 PNG
- [x] 默认 quality 为 80，默认 png-level 为 default
- [x] 输出文件名默认添加 `.compress` 后缀

## Implementation / 实现

- **文件**: `src/commands/image/compress.rs`
- **命令**: `l image compress <INPUT> [--quality Q] [--png-level LEVEL] [--format FMT] [--out-name NAME] [--out-dir DIR]`
- **参数**:
  - `--quality`: JPEG 压缩质量，范围 0-100，默认 80
  - `--png-level`: PNG 压缩级别，可选 fast/default/best，默认 default
  - `--format`: 输出格式，可选 png/jpeg/webp 等
  - `--out-name`: 输出文件名
  - `--out-dir`: 输出目录
- **状态**: ✅ 已完成

## Open Questions / 待澄清问题

- (无)
