SQP (SQuishy Picture Format) is an image format designed for ease of implementation and learning about compression and image formats while attaining a relatively good compression ratio. The general idea is to make something "good enough" while being simple, and also as a learning tool to learn about compression (mostly on my part). If you need an image format for general use, this is probably not it, go check out JPEG XL or AVIF.
This reference implementation fits in around 1000 lines of relatively simple Rust, while maintaining decent compression and decompression speeds.
- Lossless and lossy compression schemes
- Support for various color formats (RGBA, Grayscale, etc.)
- Decent compression ratios, the lossless compression can often beat PNG especially on images with transparency
- Lossy alpha compression!
- Relatively simple
- Squishy! 🍡
- Animated images
- Frame difference encoding
- Loop points
- Arbitrary frame timings
- Decoder-based frame interpolation
- Floating point color
- Metadata?
All examples are at 30% quality in both JPEG and SQP.
Original | JPEG | SQP |
---|---|---|
Images obtained from the following source: https://r0k.us/graphics/kodak/