Rust で画像のリサイズをやってみたメモ(サムネイルを作るやつ)
Rust で画像のリサイズ(ほとんどの場合縮小だと思うけど)をやってみたメモ。
Cargo.toml
[dependencies] image = "0.24.2"
main.rs
use image::GenericImageView; use image::imageops::FilterType; fn main() { let img = image::open("original.png").unwrap(); let nwidth: u32 = 500; // thumbnail width let nheight: u32 = img.height(); let resized_img = img.resize(nwidth, nheight, FilterType::Lanczos3); resized_img.save("resized.png").unwrap(); }
- リサイズ後の幅と高さは、画像を縮小させる場合、幅と高さの小さい方に引っ張られるので、正確でない方の辺は適当でも大丈夫なようだ
- 上の例だと幅を決め打ちにしたいので、高さは適当でよい
- もちろん小さくしすぎたらそっちに引っ張られてしまうので、雑に、今の高さを入れてみた
image の README には、
Note that some of the functions are very slow in debug mode. Make sure to use release mode if you experience any performance issues.
とあり、この resize() が「一部の関数」にあたるのかはわからないが、オリジナルの画像が大きいとめちゃくちゃ遅かった(4500x4500 を 1000x 1000 にするのに 40 秒かかった)が、リリース用のビルドをして、exe を実行したらめちゃくちゃ早くなった(0.6 秒)。
参考: