# image-resize

> III engine image resize worker (JPEG/PNG/WebP, EXIF orient, scale-to-fit / crop-to-fit)

| field | value |
|-------|-------|
| version | 0.1.2 |
| type | binary |
| repo | https://github.com/iii-hq/workers |
| supported_targets | x86_64-apple-darwin, aarch64-apple-darwin, i686-pc-windows-msvc, x86_64-pc-windows-msvc, aarch64-pc-windows-msvc, x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu, x86_64-unknown-linux-musl, armv7-unknown-linux-gnueabihf |
| author | iii |

## installation

```sh
iii worker add image-resize@0.1.2
```

## configuration

```yaml
- name: image-resize
  config:
    height: 200
    quality:
      jpeg: 85
      webp: 80
    strategy: scale-to-fit
    width: 200
```

## readme

# image-resize

A high-performance image resizing worker built for production workloads.

## Installation

```bash
iii worker add image-resize
```

## Configuration

Add the worker to your pipeline configuration:

```yaml
- name: image-resize
  config:
    height: 200
    quality:
      jpeg: 85
      webp: 80
    strategy: scale-to-fit
    width: 200
```

### Options

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `width` | number | 200 | Target width in pixels |
| `height` | number | 200 | Target height in pixels |
| `strategy` | string | `scale-to-fit` | Resize strategy: `scale-to-fit`, `crop`, `fill`, `contain` |
| `quality.jpeg` | number | 85 | JPEG output quality (1-100) |
| `quality.webp` | number | 80 | WebP output quality (1-100) |

### Strategies

- **scale-to-fit** — Resize to fit within the given dimensions, preserving aspect ratio
- **crop** — Crop to exact dimensions from center
- **fill** — Fill the area, stretching if necessary
- **contain** — Contain within dimensions, adding padding if needed

## Usage

```typescript
import { pipeline } from '@iii/core';

const result = await pipeline.run('image-resize', {
  input: buffer,
  params: { width: 400, height: 300, strategy: 'crop' }
});
```

## Performance

Benchmarks on a standard worker instance (2 vCPU, 512MB):

| Format | Avg Latency | Throughput |
|--------|-------------|------------|
| JPEG | 12ms | ~83 ops/s |
| WebP | 18ms | ~55 ops/s |
| PNG | 24ms | ~41 ops/s |

## License

Apache 2-0
