# Requirement Specification / 需求规格说明

# image-convert

## Background / 背景

l-tool CLI 已有视频处理、PDF 处理等功能，现扩展图片处理能力。图片格式转换是图像处理中最基本且常用的操作之一，用户经常需要将图片从一种格式转换为另一种格式以满足不同的使用场景。

## Goals / 目标

- [x] 实现基于 image crate 的图片格式转换功能
- [x] 支持 15+ 种常见图片格式
- [x] 提供灵活的输出路径和文件名配置

## Scope / 范围

### In Scope / 范围内

- 单文件格式转换
- 支持 PNG, JPEG, WebP, GIF, TIFF, AVIF, BMP, DDS, EXR, FF, HDR, ICO, PNM, QOI, TGA 共 15 种格式
- 自动生成输出文件名
- 可选指定输出目录和文件名

### Out of Scope / 范围外

- 批量转换
- 图片压缩优化
- 图片尺寸调整
- 色彩空间转换

## Constraints / 约束条件

- 依赖 Rust image crate 库
- 部分格式（如 AVIF）需要编译时启用对应 feature

## Acceptance Criteria / 验收标准

- [x] `l image convert input.png -f jpeg` 能正确转换图片格式
- [x] 支持 15 种目标格式
- [x] 输入文件不存在时显示错误提示
- [x] 输出文件已存在时显示错误提示
- [x] 自动创建输出目录（如不存在）

## Implementation / 实现

- **文件**: `src/commands/image/convert.rs`
- **命令**: `l image convert <INPUT> -f <FORMAT> [--out-dir DIR] [--out-name NAME]`
- **状态**: ✅ 已完成

## Supported Formats / 支持的格式

| 格式 | 扩展名 | 说明                  |
| ---- | ------ | --------------------- |
| PNG  | .png   | 无损压缩，支持透明    |
| JPEG | .jpg   | 有损压缩，照片常用    |
| WebP | .webp  | Google 开发，高压缩率 |
| GIF  | .gif   | 支持动画和透明        |
| TIFF | .tiff  | 无损，专业图像处理    |
| AVIF | .avif  | 新一代高效格式        |
| BMP  | .bmp   | Windows 位图格式      |
| DDS  | .dds   | DirectX 纹理格式      |
| EXR  | .exr   | OpenEXR HDR 格式      |
| FF   | .ff    | Farbfeld 格式         |
| HDR  | .hdr   | Radiance HDR 格式     |
| ICO  | .ico   | Windows 图标格式      |
| PNM  | .pnm   | Netpbm 格式           |
| QOI  | .qoi   | Quite OK Image 格式   |
| TGA  | .tga   | Targa 图像格式        |

## Open Questions / 待澄清问题

- (无)
