Repository navigation
Releases: Mahinkumar/Nano_image_server
Release list
Nano Image Server v0.7.0-beta Release
Nano Image Server - v0.7.0-beta
This is the Fourth beta release of Nano Image server. This release includes the following new additions,
1. S3-FIFO Caching.
Nano Image server now has full caching mechanism which can be enabled during the build time. The caching system is based on the S3-FIFO Caching algorithm implemented from scratch for Image specific workloads.
Performance improvements
- Average of 10% increase in requests/second
- 80%+ cache hit rates on typical workloads
- Millisecond response times for cached images
Performance Graphs
Known limitations
- Cache thrashing occurs when working with image sets exceeding cache capacity
- P99 latency slightly higher due to eviction complexity of S3FIFO implementation
Usage
To enable caching system use the following parameters.
cargo build --release --features cache To use the caching system with custom size limit
# Default size is 100 images
./nano_image_server --cert-path ./certs --cache-capacity <count>2. Improved debugging error messages.
Nano Image server now uses more streamlined error handling process.
The server displays appropriate codes in case of an error.
v0.6.0-beta Release
Nano Image Server - v0.6.0-beta
This is the third beta release of Nano Image server. This release includes the following features,
Nano Image server now requires HTTPS. You will have to setup TLS certificates to use it.
# Use the script (keygen.sh) accompanied to generate a sample (Linux).
chmod u+x keygen.sh # For permission to execute
./keygen.sh
You will need to pass the certificate's folder path as argument
# For the below structure present in root directory
# sample_certs/
# ├─ cert.pem
# ├─ key.pem
# You will pass the arguments with the -c flag.
# Refer with --help for more info
./nano_image_server -c ./sample_certsImage processing is now an optional feature that can be configured in during compilation.
V0.6.0-beta does not include image processing by default but you can opt in by the following method during building
cargo build --release -F processing Note: The caching system is not included with v0.6.0-beta as the in-work system needs further improvements to ensure reliability.
Full Changelog: v0.5.0-beta...v0.6.0-beta
v0.5.0-beta
Nano Image Server - v0.5.0-beta
Hello everyone, this is my second beta release of Nano Image Server. This release brings the most awaited feature for an image server, The caching system. It also has a more optimized image processing stack and some quality of life changes.
Cache
v0.5.0-beta brings a single tier caching system with caches stored on your secondary memory and invalidation based on storage limits. Expect very huge speedups for repeating requests. A Memory based caching system and a ttl based secondary cache for a multi tier cache system is also under works, Star the repository for future release updates.
Optimized image processing stack
A more optimized code path for image processing stack. If you perform filters, resizing, processing and transforms in combination you will see performance improvements in your use case. This is possible as earlier the processing stack had an overhead of repeated encoding and decoding for every operation. v0.5.0 beta now only performs encode and decode once and only if needed.
Other changes
Some other changes includes new CLI features and new flags for Using custom hosting ports and url paths, disabling caching. CLI flags are now more streamlined.
Full Changelog: v0.4.1-beta...v0.5.0-beta
Benchmarks
These are some benchmarks for direct image requests using oha. Take it with a pinch of salt as perfomance will hugely vary based on the use case and hardware.
Benchmark command: oha --urls-from-file tests.txt -n 1000000 -c 12 --latency-correction --disable-keepalive --no-tui
The tests.txt file contained 20 different image file request without any image processing. The 20 images vary in sizes from 4k and greater to 720p distributed.
v0.4.1-beta
Changes
- Update CLI Methods
- Add basic templates for console
Full Changelog: v0.4.0-beta...v0.4.1-beta
v0.4.0-beta
Nano image server v0.4.0-beta
I'm excited to announce the first beta release of Nano image server, a lightweight, blazingly fast image serving solution with on-the-fly image processing capabilities. GPU support and caching are planned before the stable release. Star the repository for the future updates.
Changes
- New processing modes Invert and Unsharpen.
- Add configurable port flags
- Simplified processing parameters
- Add optimal resize algorithm
Core Features
- Asynchronous, memory-safe, and thread-safe architecture built on axum and tokio runtime.
- Blazingly fast image delivery with minimal latency
- Simple deployment with straightforward image folder configuration
- Cross-platform support for Linux and Windows
Supported operations
Filters:
- Blur
- Grayscale
- Brightness adjustment
- Contrast enhancement
Transforms:
- Horizontal and vertical flipping
- Rotation (90°, 180°, 270°)
- Hue rotation
Processing:
- Image inversion
- Unsharpening
Supported Image formats
The following formats are supported via encoders and decoders from the Image-rs Library
| Format | Decoding | Encoding |
|---|---|---|
| AVIF | Yes * | Yes (lossy only) |
| BMP | Yes | Yes |
| Farbfeld | Yes | Yes |
| GIF | Yes | Yes |
| HDR | Yes | Yes |
| ICO | Yes | Yes |
| JPEG | Yes | Yes |
| EXR | Yes | Yes |
| PNG | Yes | Yes |
| PNM | Yes | Yes |
| QOI | Yes | Yes |
| TGA | Yes | Yes |
| TIFF | Yes | Yes |
| WebP | Yes | Yes (lossless only) |
Visit docs for references and usage.
Full Changelog: v0.3.2-alpha...v0.4.0-beta
v0.3.2-alpha
Add support for format aware encoding and decoding
Earlier releases of nano image server was limited to JPEG encoding and decoding. The image format sent to client is always JPEG format regardless of source file format. After this release the encoder and decoder respects file formats and works accordingly.
The following formats are supported via encoders and decoders from the Image-rs Library
| Format | Decoding | Encoding |
|---|---|---|
| AVIF | Yes * | Yes (lossy only) |
| BMP | Yes | Yes |
| Farbfeld | Yes | Yes |
| GIF | Yes | Yes |
| HDR | Yes | Yes |
| ICO | Yes | Yes |
| JPEG | Yes | Yes |
| EXR | Yes | Yes |
| PNG | Yes | Yes |
| PNM | Yes | Yes |
| QOI | Yes | Yes |
| TGA | Yes | Yes |
| TIFF | Yes | Yes |
| WebP | Yes | Yes (lossless only) |
Full Changelog: v0.3.1-alpha...v0.3.2-alpha
v0.3.1-alpha
Add New Transforms
- Flip horizontal
- Flip Vertical
- Rotate (90deg, 180deg, 270deg)
- Hue rotate
Full Changelog: v0.3.0-alpha...v0.3.1-alpha
v0.3.0-alpha
Add New filters
- Blur
- Grayscale
- Brighten
- Contrast
Refactored code for efficiency and readablity
Full Changelog: v0.2.0-alpha...v0.3.0-alpha
v0.2.0-alpha
v0.2.0 - Major Performance Improvements 🚀
Key Features
Standard Improvements
Separated image processing and static file serving algorithms.
All reads from server are now asynchronous using tokio rs.
Optimized request handling architecture.
Improved memory management for image processing.
Resize Algorithms
Choose from several resize algorithms for resizing using the resfilter query.
Availible filters are,
- Nearest
- Triangle
- Catmullrom
- Gaussian
- Lanczos
Performance Improvements
Without Image Processing
- Dramatic Performance Boost on request without image processing
- Reduced Latency: 8 ms on average
- Optimized Transfer Rates
With Image Processing
67% Faster image processing compared to previous version
40% Lower Latency compared to previous version
Processing is now more memory efficient.
Update Notes
- Implemented separate processing pipelines for static and dynamic requests
- Optimized memory allocation for image operations
- Enhanced concurrent request handling
- Reduced processing overhead for non-image requests
- Add new resize filters
Benchmark Results
Full Changelog: v0.1.1-alpha...v0.2.0-alpha
v0.1.1-alpha
Release v0.1.1 Alpha - Nano Image Server
The new version of Nano Image server brings several performance improvements across the board. This was possible as we moved to more faster, natively optimized image-rs library and update read and write codes for efficiency.
Key Improvements in overall
🚀 70.9% increase in request handling
⚡ 41.5% faster response time
📈 194.3% improvement in transfer rate
⏱️ 41.5% reduction in total processing time
Full Changelog: v0.1.0-alpha...v0.1.1-alpha


