A modern, educational image format with transparency, compression, and animation support
Features โข Quick Start โข Documentation โข Installation โข Contributing
YEETIFF (YEET Image Format) is an open-source educational project designed to demonstrate modern image format concepts including:
- ๐จ Full RGBA transparency - True alpha channel support
- ๐๏ธ Smart compression - zlib (v2), Brotli/Zstd (v3 planned)
- ๐พ Flexible encoding - Human-readable hex or efficient binary
- ๐ Rich metadata - JSON-based extensible metadata
- ๐ฌ Animation support - Multi-frame sequences (v3 planned)
- ๐ Color management - ICC profiles (v3 planned)
YEET was created as an educational tool to help developers understand:
- How image formats work at the byte level
- Compression algorithms and their trade-offs
- Color space management and ICC profiles
- The evolution from simple (v1) to complex (v3) formats
Perfect for: CS students, format designers, compression enthusiasts, and curious developers!
| Feature | Status | Description |
|---|---|---|
| RGBA Support | โ | Full alpha channel transparency |
| Compression | โ | zlib compression (40-60% reduction) |
| Binary Mode | โ | Efficient binary encoding |
| Metadata | โ | JSON metadata (author, timestamp, etc.) |
| Batch Convert | โ | Process entire folders at once |
| GUI Viewer | โ | OpenGL-accelerated viewer with egui |
| Cross-Platform | โ | Windows, macOS, Linux support |
| v1 Compatible | โ | Reads legacy v1 format |
| Feature | Status | Description |
|---|---|---|
| ICC Profiles | ๐ง | Accurate color reproduction |
| Animations | ๐ง | Multi-frame sequences (like GIF/APNG) |
| HDR Support | ๐ | 16-bit per channel |
| Brotli/Zstd | ๐ | Better compression algorithms |
| Extended EXIF | ๐ | Camera metadata |
Option 1: Windows Installer (Easiest)
# Download and run YeetInstaller.exe
# Automatically configures file associationsOption 2: Build from Source
# Clone repository
git clone https://github.com/jakobsstijn/YEETIFF.git
cd YEETIFF/yeet-project
# Build stable viewer (v2)
cd yeet-core
cargo build --release
# Binary will be at: target/release/yeetOption 3: Cargo Install
cargo install --path yeet-coreView a YEET image:
yeet image.yeetConvert PNG to YEET:
# Basic conversion
yeet compile photo.png
# Optimized (recommended)
yeet compile photo.png --compress --binaryBatch convert folder:
yeet batch ./my-photos --compress --binary| Format | Size | Notes |
|---|---|---|
| PNG | 2.1 MB | Lossless, widely supported |
| YEET v2 (text) | 6.2 MB | Human-readable hex |
| YEET v2 (binary) | 6.2 MB | Raw binary data |
| YEET v2 (compressed) | ~500 KB | โญ Recommended |
| YEET v3 (Brotli) | ~450 KB | ๐ง Planned |
v1 (Legacy) v2 (Stable) v3 (Experimental)
โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ
RGB only โ
RGBA โ
RGBA + HDR
No compression โ
zlib โ
zlib/Brotli/Zstd
Text only โ
Text + Binary โ
Advanced modes
8-byte header โ
20+ byte header โ
Extended header
No metadata โ
JSON metadata โ
Extended EXIF
6.2 MB (1080p) โ
500 KB (compressed) ๐ง 450 KB (planned)
yeet-project/
โ
โโโ ๐ฆ yeet-core/ โญ Stable v2 viewer (PRODUCTION)
โ โโโ src/main.rs 570+ lines of production code
โ โโโ Cargo.toml
โ โโโ README.md Complete usage guide
โ
โโโ ๐ฌ yeet-v3/ Experimental next-gen (ALPHA)
โ โโโ src/main.rs v3 features (ICC, animation)
โ โโโ Cargo.toml
โ โโโ README.md v3 roadmap
โ
โโโ ๐ yeet-legacy/ v1 backward compatibility
โ โโโ src/main.rs Original format support
โ โโโ Cargo.toml
โ โโโ README.md Migration guide
โ
โโโ ๐ฟ yeet-installer/ Windows installer
โ โโโ installer_gui.py Tkinter installation wizard
โ โโโ build_installer.py PyInstaller build script
โ โโโ README.md Installer documentation
โ
โโโ ๐ docs/ Complete documentation
โ โโโ SPEC_v2.md 650+ lines - v2 specification
โ โโโ SPEC_v3.md 200+ lines - v3 specification
โ โโโ ARCHITECTURE.md 500+ lines - Code organization
โ โโโ CONTRIBUTING.md 550+ lines - Contribution guide
โ
โโโ ๐ฏ examples/ Example YEET files
โ โโโ README.md Usage examples
โ
โโโ Cargo.toml Workspace configuration
โโโ README.md This file
โโโ BUILD.md Build instructions
โโโ LICENSE MIT License
- Learn image formats: Understand headers, compression, metadata
- CS courses: Practical example of file format design
- Workshops: Hands-on format implementation
- Format experiments: Test new compression algorithms
- Color science: ICC profile integration
- Animation: Multi-frame encoding techniques
- Transparency: Full RGBA support unlike JPEG
- Compression: Better than uncompressed formats
- Metadata: Rich JSON-based information
# GUI viewer (default)
yeet image.yeet
# View with scrolling (large images)
# Automatic scrollable canvas for images > window size# Basic conversion (uncompressed, hex text)
yeet compile photo.png
# Optimized conversion (recommended)
yeet compile photo.png --compress --binary
# Batch convert directory
yeet batch ./photos --compress --binary
# Options:
# --compress Apply zlib compression (40-60% smaller)
# --binary Use binary mode instead of hex textyeet help
yeet --help
yeet -h-
YEET v2 Specification - Complete byte-level format documentation
- Header structure
- Flags and encoding modes
- Compression details
- Examples and size calculations
-
YEET v3 Specification - Next-generation features
- ICC color profiles
- Multi-frame animation
- Enhanced compression
- HDR support
-
Architecture Guide - Code organization
- Component breakdown
- Data flow diagrams
- Build system
- Performance considerations
-
Contributing Guide - How to contribute
- Development setup
- Code style guidelines
- Pull request workflow
- Testing requirements
-
Build Guide - Building from source
- Prerequisites
- Build commands
- Troubleshooting
- Distribution
- yeet-core README - Stable v2 viewer
- yeet-v3 README - Experimental v3
- yeet-legacy README - v1 support
- yeet-installer README - Windows installer
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ YEET v2 File Structure โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Magic Bytes โ "YEET" โ 4 bytes โ
โ Version โ 0x02 โ 1 byte โ
โ Flags โ Compression/Alpha/Binary โ 1 byte โ
โ Width โ Image width (little-endian) โ 4 bytes (u32) โ
โ Height โ Image height (little-endian) โ 4 bytes (u32) โ
โ Metadata Length โ JSON length (little-endian) โ 2 bytes (u16) โ
โ Metadata โ JSON string โ Variable โ
โ Data Length โ Pixel data length (LE) โ 4 bytes (u32) โ
โ Pixel Data โ Image data (compressed?) โ Variable โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Real-world performance (1920ร1080 images):
| Image Type | Uncompressed | Compressed | Reduction |
|---|---|---|---|
| Photos | 6.2 MB | 2.5 MB | 60% |
| Graphics | 6.2 MB | 1.9 MB | 70% |
| Text/UI | 6.2 MB | 1.2 MB | 80% |
Rust (yeet-core):
image- Image I/Oeframe- GUI frameworkegui_extras- Image widgetsflate2- zlib compression
Python (installer):
tkinter- GUI (built-in)Pillow- Image handlingpywin32- Windows registryPyInstaller- Exe bundling
We welcome contributions! This is an educational project designed to help people learn.
- ๐ Report bugs - Found an issue? Let us know!
- ๐ก Suggest features - Have an idea? Share it!
- ๐ Improve docs - Better explanations and examples
- ๐จ Design - Logo, icons, UI improvements
- ๐ป Code - Bug fixes, features, optimizations
- ๐งช Tests - Improve test coverage
- ๐จ Logo design - We need a YEET logo!
- ๐ธ ICC profiles - Color management for v3
- ๐ฌ Animation - Multi-frame support for v3
- ๐๏ธ Compression - Brotli/Zstd integration
- ๐งช Testing - Increase test coverage
# Fork and clone
git clone https://github.com/YOUR_USERNAME/YEETIFF.git
cd YEETIFF/yeet-project
# Build and test
cargo build --workspace
cargo test --workspace
# Format and lint
cargo fmt --all
cargo clippy --workspaceSee CONTRIBUTING.md for detailed guidelines.
- PNG Specification - Learn from PNG
- JPEG Explained - How JPEG works
- Image Compression - Google's guide
- The Rust Book - Official guide
- Rust by Example - Practical examples
- Rustlings - Interactive exercises
- ICC Profiles - Color management
- sRGB Standard - Standard color space
| Component | Lines | Language | Status |
|---|---|---|---|
| yeet-core | 570 | Rust | โ Production |
| yeet-v3 | 500 | Rust | ๐ง Alpha |
| yeet-legacy | 150 | Rust | โ Stable |
| installer | 550 | Python | โ Working |
| Total Code | 1,770 | - | - |
| Document | Lines | Purpose |
|---|---|---|
| Main README | 350+ | Project overview |
| SPEC_v2.md | 650+ | v2 format spec |
| SPEC_v3.md | 200+ | v3 roadmap |
| ARCHITECTURE.md | 500+ | Code organization |
| CONTRIBUTING.md | 550+ | Contribution guide |
| Total Docs | 2,400+ | - |
- RGBA transparency support
- zlib compression
- Binary encoding mode
- JSON metadata
- Batch conversion
- GUI viewer
- Windows installer
- Complete documentation
- Unit tests
- Example YEET files
- Performance benchmarks
- Cross-platform testing
- ICC color profiles
- Multi-frame animation
- Brotli/Zstd compression
- HDR (16-bit) support
- Extended EXIF metadata
- Animation playback
- Web viewer (WASM)
- Animation editor
- Plugin system
- Package manager distribution
- Library API (yeet-lib)
YEET v2 is stable and functional, but it's primarily an educational tool. For production, use PNG, JPEG, or WebP.
YEET was created to teach how image formats work. It's easier to learn from a simple, well-documented format than complex production formats.
Yes! YEET is MIT licensed. However, consider it experimental and best suited for educational purposes.
- Advantages: Educational, simple structure, good compression
- Disadvantages: Larger files than PNG, not widely supported
- Use YEET for: Learning, experiments, education
- Use PNG for: Production, web, wide compatibility
No, YEET uses lossless compression (zlib). All data is preserved.
No! v2 will remain stable and supported. v3 is experimental and may change frequently.
- Rust - Systems programming language
- egui - Immediate mode GUI
- image-rs - Image processing
- flate2 - Compression
- PNG - Well-designed, documented format
- WebP - Modern compression techniques
- APNG - Animation approach
- Rust Community - Excellent crates and support
- Open Source - Standing on the shoulders of giants
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License - Copyright (c) 2025 Stijn Jakobs
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software...
Stijn Jakobs
- ๐ GitHub: @jakobsstijn
- ๐ฆ Repository: YEETIFF
- ๐ Network Developer @ AstroidMC
- ๐จ Creative Director @ Ordnary
- ๐ฆ Repository: github.com/jakobsstijn/YEETIFF
- ๐ Issues: Report a Bug
- ๐ฌ Discussions: Ask Questions
- ๐ Docs: Complete Documentation
- โฌ๏ธ Releases: Download Installer
| Resource | Link |
|---|---|
| Installation | Quick Start |
| Format Spec | SPEC_v2.md |
| Contributing | CONTRIBUTING.md |
| Building | BUILD.md |
| Architecture | ARCHITECTURE.md |
| Examples | examples/ |