File Formats
OpenGPEX supports a wide range of image formats for import and export, with special handling for the native .gpex project format.
Supported Import Formats
| Format | Extension | Notes |
|---|---|---|
| JPEG | .jpg, .jpeg | Most common photo format |
| PNG | .png | Lossless with alpha support |
| WebP | .webp | Modern lossy/lossless format |
| AVIF | .avif | Next-gen compression |
| GIF | .gif | First frame extracted |
| BMP | .bmp | Uncompressed bitmap |
| SVG | .svg | Rasterized on import |
| HEIC/HEIF | .heic, .heif | Via WASM decoder (Apple photos) |
Export Formats
| Format | Encoder | Quality Range |
|---|---|---|
| JPEG | Browser native | 1-100 |
| PNG | Browser native | Lossless |
| WebP | Browser native | 1-100 |
| AVIF | WASM (avif_enc.wasm) |
1-100 |
Native Format: .gpex
The .gpex format is a ZIP archive containing the full project state:
project.gpex (ZIP)
├── manifest.json # Version, dimensions, metadata
├── state.json # Serialized EditorState (frames, layers)
├── assets/ # CAS-stored image blobs
│ ├── sha256-abc123.png
│ └── sha256-def456.jpg
└── thumbnails/ # Preview images
└── preview.webp
Key Features:
- Self-contained — All assets bundled, no external dependencies
- Resumable — Full undo history can optionally be included
- Portable — Standard ZIP, inspectable with any archive tool
EXIF Preservation
When exporting, OpenGPEX preserves original EXIF metadata (camera model, GPS, date) from the source image, unless the user explicitly opts to strip it for privacy.
WASM Encoders
Performance-critical formats use WebAssembly encoders running inside Web Workers:
| Encoder | Speed vs JS | File Size Savings |
|---|---|---|
| AVIF (WASM) | 10-50× faster | 30-50% smaller than JPEG |
WASM modules are lazy-loaded — only downloaded when the user first exports in that format.
Next Steps
- Engine & Workers — WASM integration details
- Rendering Pipeline — Export pipeline architecture
- Cloud Storage — Saving .gpex to the cloud
Last updated: 2026-06-14