Fast and safe image scaling in Rust
This crate provides zero unsafe fast rescaling.
Example
let img = open
.unwrap
.decode
.unwrap;
let dimensions = img.dimensions;
let transient = img.to_rgb8;
let start = now;
let src_size = new;
let dst_size = new;
let resized = resize_rgb8.unwrap;
Example comparison time for downscale RGBA 4928x3279 8 bit image in 4 times.
| Lanczos3 | Bilinear | |
|---|---|---|
| image(aarch64) | 121.19 | 48.89 |
| pic-scale(aarch64) | 26.90 | 15.13 |
| fir(aarch64) | 25.93 | 11.30 |
| image(x86) | 192.52 | 88.63 |
| pic-scale(x86) | 49.79 | 35.98 |
| pic-scale(x86-cpu-native) | 27.21 | 20.48 |
| fir(x86) | 42.89 | 24.13 |
| fir(x86-cpu-native) | 41.17 | 23.62 |
Example comparison time for downscale RGB 4928x3279 8 bit image in 4 times.
| Lanczos3 | Bilinear | |
|---|---|---|
| image(aarch64) | 123.85 | 51.30 |
| pic-scale(aarch64) | 31.73 | 18.20 |
| fir(aarch64) | 24.04 | 11.37 |
| image(x86) | 201.52 | 90.82 |
| pic-scale(x86) | 34.54 | 25.05 |
| fir(x86) | 41.97 | 25.21 |
Example comparison time for downscale RGBA 4928x3279 16 bit image in 4 times.
| Lanczos3 | Bilinear | |
|---|---|---|
| image(aarch64) | 123.27 | 52.91 |
| pic-scale(aarch64) | 28.041 | 18.89 |
| fir(aarch64) | 149.87 | 50.08 |
| image(x86) | 196.28 | 194.75 |
| pic-scale(x86) | 59.89 | 57.99 |
| pic-scale(x86-cpu-native) | 44.07 | 57.99 |
| fir(x86) | 52.73 | 28.35 |
Example comparison time for downscale RGB 4928x3279 16 bit image in 4 times.
| Lanczos3 | Bilinear | |
|---|---|---|
| image(aarch64) | 130.45 | 61.06 |
| pic-scale(aarch64) | 36.10 | 23.80 |
| fir(aarch64) | 122.01 | 43.36 |
Example comparison time for downscale RGBA 4928x3279 f32 image in 4 times.
| Lanczos3 | Bilinear | |
|---|---|---|
| image(aarch64) | 100.16 | 51.21 |
| pic-scale(aarch64) | 43.04 | 19.16 |
| fir(aarch64) | 114.35 | 37.75 |
| image(x86) | 164.04 | 98.90 |
| pic-scale(x86) | 57.39 | 43.84 |
| fir(x86) | 60.30 | 29.92 |
This project is licensed under either of
at your option.