Files
image-tools/README.md
T
zemion 79d223c347
Verify / verify (push) Canceled after 0s
Release Image Tools 0.2.0
2026-09-02 07:56:38 +02:00

47 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Image Tools
Image Tools is a standalone, local-first raster editor for the [add·ideas Toolbox](https://git.add-ideas.de/lotobo/toolbox-portal). It checks and processes selected files in the browser; image contents are not uploaded.
## Version 0.1 scope
- Open static JPEG, PNG and WebP images.
- Inspect signatures, dimensions, animation, alpha, EXIF orientation and common metadata/profile markers before decode.
- Refuse recognized animated or multi-picture input instead of silently discarding frames.
- Crop with numeric controls, centered aspect presets and a pointer/keyboard-adjustable overlay; zoom source and result together from 25400% without changing export pixels.
- Rotate in quarter turns and flip horizontally or vertically.
- Resize by fit, center-cropped fill or exact dimensions.
- Preview source and result side by side while keeping the last completed preview visible during updates.
- Export PNG, JPEG or WebP with an explicit quality/background policy.
- Save/load a strictly validated, versioned JSON recipe containing transform, output and metadata/colour policy.
- Apply one recipe to a bounded queue; download results individually or build one collision-free ZIP containing images, per-image JSON reports and a batch manifest. ZIP assembly has its own 128 MiB input / 160 MiB output budget and is cancellable while reading or compressing.
Inputs are bounded before browser decoding: 20 files, 256 MiB per source, 512 MiB per queue, 32,768 pixels per edge, 40 megapixels, and a 512 MiB estimated working-memory budget. Image processing runs through the shared cancellable disposable-worker protocol when OffscreenCanvas is available, with typed progress, a main-thread capability fallback and a 120-second hard deadline.
## Honest format and colour policy
Version 0.1 is intentionally static-only. GIF, AVIF, HEIC, JPEG XL, TIFF, BMP, animated PNG/WebP and recognized multi-picture JPEG are not flattened or partially exported. The UI probes the exact native encoder MIME response and disables formats that the current browser cannot produce; header support is never presented as proof that decoding will succeed.
Exports are browser-native pixel re-encodes. Source EXIF, XMP, ICC, comments, thumbnails and trailing data are not intentionally copied, but Image Tools is not a privacy verifier. Browser canvas uses an 8-bit working representation and does not preserve arbitrary ICC profiles, HDR precision, original compression, or byte identity. JPEG is lossy; PNG is lossless only relative to the canvas pixels. Browser encoder output can vary.
See [Architecture](docs/ARCHITECTURE.md), [Privacy and security](docs/PRIVACY-SECURITY.md), and [Accessibility](docs/ACCESSIBILITY.md).
## Development
Requires Node.js 22 and npm 11.
```sh
npm ci
npm run check
npm run test:browser
```
The tests include generated JPEG/PNG/WebP header fixtures, malformed/over-limit cases, geometry/report unit tests, and full local upload/worker/export flows in Chromium and Firefox.
## Release
`npm run release:artifact` creates `release/image-tools-0.2.0.zip` and its checksum sidecar after all checks pass.
## Licence
GPL-3.0-or-later. Runtime dependencies retain their licences; see [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).