# Image Dither - Obsidian Plugin
Intercepts images pasted or dropped into notes so you can aestehtically dither and resize them, saving storage space

## Features
### Major storage savings!
### Dithering algorithms
Original (2.8MB)
Photo by SwapnIl Dwivedi on Unsplash
| Visual Example | Algorithm | Description |
| :--------------------------------------------------------------------------------------------------------------------------------------- | :------------------ | :---------------------------------------------------------------------------------------- |
|
272KB | **Floyd-Steinberg** | Error-diffusion; best tonal quality |
|
161KB | **Blue Noise** | Interleaved gradient noise; organic, film-grain-like pattern with no repetition artifacts |
|
190KB | **Ordered (Bayer)** | Matrix-based; structured pattern |
|
82KB | **Threshold** | Hard cutoff; most aggressive |
|
690KB | **Grayscale** | Smooth grayscale conversion; no dithering |
### Controls (per image)
- **Threshold** — black/white cut point (0–255)
- **Sharpness** — error spread amount (0–100%)
- **Brightness / Contrast** — pre-dither adjustments (−100 to +100%)
- **Resize** — output scale (10–100% of original dimensions)
- **Invert colors** — flip output black/white
### Presets
- **Natural Dither** — Floyd-Steinberg at full size; best default
- **High Contrast** — Threshold algorithm at full size; bold black/white
- **Blue Noise** — Interleaved gradient noise at full size; organic grain
- **Grayscale** — Smooth grayscale conversion at full size
- **Auto (max compression)** — tests all presets and picks the one with the smallest output
### Transparency support
The alpha channel is never modified. Transparent PNGs remain transparent after dithering.
### Compression feedback
- Live size display for original and dithered output (e.g. `1.2 MB → 48.3 KB`)
- Percentage saved with color-coded indicator (good / warn / danger)
- Running total of bytes saved across all uses, shown in Settings
### Output filename
The dithered filename is pre-filled in the modal using a configurable template and can be edited before saving. Supported tokens:
| Token | Replaced with |
| ------------- | --------------------------------------- |
| `{original}` | Original filename without extension |
| `{algo}` | Algorithm name (e.g. `floyd-steinberg`) |
| `{resize}` | Resize percentage (e.g. `75`) |
| `{timestamp}` | ISO timestamp at time of save |
Filenames are automatically deduplicated. If the target name already exists in the folder, a numeric suffix is appended.
## Settings
| Setting | Default | Description |
| -------------------------- | ------------------- | -------------------------------------------------------------------------------------- |
| Enabled | On | Toggle paste/drop interception |
| Default preset | Natural Dither | Preset applied when the modal opens |
| Default output width (px) | 700 | Snaps resize % to the closest value for each image; leave blank to keep original width |
| Dithered filename template | `{original}-dither` | Tokens: `{original}`, `{algo}`, `{resize}`, `{timestamp}` |
## Commands
- **Image Dither: Enable** — turn interception on
- **Image Dither: Disable** — turn interception off
The ribbon icon also toggles the plugin on/off.
## Output format
Images are always saved as **PNG** to the attachment location in specified in your Obsidian preferences > Files and links.
## More examples
